我想编写一个 XPCOM 组件,该组件在网页中作为 JavaScript 对象公开。我正在寻找像 Google Gears 这样的东西。也就是说,安装 Google Gears Firefox 扩展后,任何想要使用它的网页都可以使用 javascript 对象“google.gears”。我发现了很多关于 XPCOM 开发的 mozilla 文档,但没有找到关于将组件暴露给在网页中运行的 javascript 的内容。 XPCOM 可以做到这一点吗?我需要编写 Firefox 插件而不是扩展吗?
我正是使用 Firefox 4 中的新 API - nsiDOMGlobalPropertyInitializer 来实现这一点,它允许您创建一个 JS 对象来延迟附加到所有窗口。这就是 Firefox 4 中新 Web 控制台的创建方式。
您的组件中必须具有以下 QI 属性:
QueryInterface: XPCOMUtils.generateQI([Ci.nsIDOMGlobalPropertyInitializer]),
以下是扩展中完整实现的示例:
https://github.com/daviddahl/domcrypt/blob/master/extension/domcrypt/components/domcrypt.js https://github.com/daviddahl/domcrypt/blob/master/extension/domcrypt/components/domcrypt.js
所以基本上,QI 到 Ci.nsIDOMGlobalPropertyInitializer,然后确保你的清单中有这样一行:
category JavaScript-global-property crypt @droplettr.com/domcrypt;1
see: https://github.com/daviddahl/domcrypt/blob/master/extension/domcrypt/components/domcrypt.manifest https://github.com/daviddahl/domcrypt/blob/master/extension/domcrypt/components/domcrypt.manifest
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)