使用firefox插件,我希望向CustomEvent()发送preference window。
我使用openDialog()打开首选项窗口,并保持对打开的窗口的引用。之后,我尝试发送事件,但事件从未收到。
var pWin = window.openDialg("chrome://myextension/path/options.xul", "name", features);
var event = new pWin.CustomEvent("prefwindow-event");
pWin.dispatchEvent(event);
在prefwindow范围内,我在XUL附加脚本中有这段代码:
window.addEventListener("prefwindow-event", this.catchEvent, false);
但是,我从未收到过这个事件。 CustomEvent()的文档说
创建CustomEvent对象时,必须从中创建对象 与你要射击的同一个窗口。
所以这是否意味着,我永远不会将我的主扩展范围中的事件发送到另一个窗口的事件?如果这确实可行,我在这里做错了什么?如果没有,还有其他选择吗?
答案 0 :(得分:1)
我想以下内容将起作用
var pWin = window.openDialg("chrome://myextension/path/options.xul", "name", features);
pWin.addEventListener("load", function(){
var event = new pWin.CustomEvent("prefwindow-event");
pWin.dispatchEvent(event);
}, false);
答案 1 :(得分:1)
Paa的代码应该有用。
var pWin = window.openDialg("chrome://myextension/path/options.xul", "name", features);
pWin.addEventListener("prefwindow-event", function(){pWin.alert('prefwindow-event fired')}, false);
pWin.addEventListener("load", function(){
var event = new pWin.CustomEvent("prefwindow-event");
pWin.dispatchEvent(event);
}, false);
如果没有,那就试试这个:
var pWin = window.openDialg("chrome://myextension/path/options.xul", "name", features);
pWin.addEventListener("load", function(){
pWin.addEventListener("prefwindow-event", function(){pWin.alert('prefwindow-event fired')}, false);
var event = new pWin.CustomEvent("prefwindow-event");
pWin.dispatchEvent(event);
}, false);