从firefox插件中公开js变量

时间:2012-01-17 04:08:56

标签: javascript firefox firefox-addon

我必须构建一个firefox扩展,我希望能够找到是否使用js从任何网站安装扩展。

我尝试在扩展码上设置一个布尔值,如:

myExtensionName_is_installed = true;

但那不起作用,我无法从js访问。像firebug这样的扩展函数可以从js这样的函数中使用,例如console.log(),那么如何使用js使我的扩展boolean可以从任何网站获得?

2 个答案:

答案 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) { ... }