将CustomEvent()发送到prefwindow - Firefox插件

时间:2014-03-19 10:28:22

标签: javascript dom javascript-events firefox-addon xul

使用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对象时,必须从中创建对象   与你要射击的同一个窗口。

所以这是否意味着,我永远不会将我的主扩展范围中的事件发送到另一个窗口的事件?如果这确实可行,我在这里做错了什么?如果没有,还有其他选择吗?

2 个答案:

答案 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);