将XPCOM组件公开给网页中的javascript

Tom*_*Tom 3 javascript firefox xpcom

我想编写一个XPCOM组件,它在网页中作为javascript对象公开.像Google Gears这样的东西就是我所追求的.也就是说,在安装Google Gears Firefox扩展程序后,任何想要使用它的网页都可以使用javascript对象"google.gears".我发现了很多关于XPCOM开发的mozilla文档,但没有任何关于将组件暴露给网页中运行的javascript的信息.XPCOM可以实现吗?我是否需要编写Firefox插件而不是扩展名?

小智 7

我正在使用Firefox 4中的新API - nsiDOMGlobalPropertyInitializer完成这项工作 - 它允许您创建一个JS对象,以便懒惰地附加到所有窗口.这是创建Firefox 4中新Web控制台的方式.

您必须在组件中具有以下QI属性:

QueryInterface: XPCOMUtils.generateQI([Ci.nsIDOMGlobalPropertyInitializer]),
Run Code Online (Sandbox Code Playgroud)

以下是扩展中完整实现的示例:

https://github.com/daviddahl/domcrypt/blob/master/extension/domcrypt/components/domcrypt.js

所以基本上,QI到Ci.nsIDOMGlobalPropertyInitializer,然后确保你的清单有一行如下:

category JavaScript-global-property crypt @droplettr.com/domcrypt;1
Run Code Online (Sandbox Code Playgroud)

请参阅:https://github.com/daviddahl/domcrypt/blob/master/extension/domcrypt/components/domcrypt.manifest