无法从页面javascript调用firefox扩展函数

时间:2014-02-14 11:17:10

标签: javascript firefox javascript-events firefox-addon

我有一个带有不同文档对象的XUL扩展名,这可能就是为什么以下内容不起作用的原因:

在我的页面javascript:

var evt = document.createEvent("Events");
evt.initEvent("JSON_UPDATE_EVENT", true, false);
document.dispatchEvent(evt);

在扩展名中,main.js文件:

document.addEventListener("JSON_UPDATE_EVENT", alert("hello"), false, true);

我甚至尝试过尝试过:

Application.activeWindow.activeTab.document.addEventListener("JSON_UPDATE_EVENT", alert("hello"), false, true);

在这两种情况下,仅在启动扩展时调用alert()一次,但从不在事件上调用。网页和扩展中的文档引用了不同的对象,这可能是原因。

1 个答案:

答案 0 :(得分:1)

main.js文件中的

执行此操作:

var chromeWindow = Services.wm.getMostRecentWindow('navigator:browser');
function rawr() { 
chromeWindow.alert("hello")
}
chromeWindow.gBrowser.addEventListener("JSON_UPDATE_EVENT", rawr, false, true);

每个带有标签的窗口都有自己的gBrowser。

如果要将其添加到所有当前打开的窗口,以及打开的所有未来窗口,请在此处查看此模板: https://gist.github.com/Noitidart/8673632

使用模板,只需编辑addDiv和removeDiv