我必须构建一个firefox扩展,我希望能够找到是否使用js从任何网站安装扩展。
我尝试在扩展码上设置一个布尔值,如:
myExtensionName_is_installed = true;
但那不起作用,我无法从js访问。像firebug这样的扩展函数可以从js这样的函数中使用,例如console.log(),那么如何使用js使我的扩展boolean可以从任何网站获得?
答案 0 :(得分:1)
你没有提到太多细节,但我猜问题是XPCNativeWrappers - 你的代码和网页有不同的DOM视图,你添加到DOM对象的属性通常对网络不可见页面。如果你想在window
对象上设置一个变量并让窗口看到它,你需要这样做:
XPCNativeWrapper.unwrap(window).myExtensionName_is_installed = true;
关于如何访问window
对象 - 经典扩展会use content-document-global-created
notification。使用附加SDK构建的扩展名为use page-mod
package(您有unsafeWindow
属性,并且不需要显式展开窗口对象。
答案 1 :(得分:0)
我会使用您的扩展程序在页面中注入一些识别元素。然后使用浏览器端javascript查看它是否存在。
<div id="myext" style="display: none;">MyExtension v2.x</div>
if (document.getElementById('myext').length > 0) { ... }