我有一个带有不同文档对象的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()一次,但从不在事件上调用。网页和扩展中的文档引用了不同的对象,这可能是原因。
答案 0 :(得分:1)
执行此操作:
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