CustomEvent()到XUL选项卡-Firefox插件
CustomEvent() to an XUL tab - Firefox addon
由于许多原因,我不得不在选项卡中打开XUL,而不是使用标准窗口。我希望将自定义事件发送到此选项卡,下面是我的代码的样子:
myextension.js:
..
var pTab = window.gBrowser.loadOneTab("chrome://myextension/path/options.xul",
{inBackground: false});
var pWin = window;
var event = new pWin.CustomEvent("prefwindow-event");
pWin.dispatchEvent(event);
..
options.xul代码:
window.addEventListener("load", init, false);
window.addEventListener("prefwindow-event", myevent, false, true);
..
myevent: function(e) {
dump("My event : " + e.details );
},
..
然而,我不了解这个事件。我已经尝试了所有可能的选择。启用/禁用addEventListener((的useCapture
和wantsUntrusted
。在意识到在窗口之间发送自定义事件有限制后,我还尝试使用tab元素调度事件,如下所示:
pTab.dispatchEvent(event);
那也不行。1( 如果我使用对话框窗口而不是选项卡(openDialog
而不是loadOneTab
(,那么事件调度将非常正常。2( tab元素仅继承dispatchEvent
,而不是CustomEvent
所以问题是,有没有一种方法可以发送自定义事件并在选项卡中接收?
var event = new pTab.linkedBrowser._contentWindow.CustomEvent("prefwindow-event");
编辑:
概念验证,打开草稿栏,将环境切换到浏览器,运行以下代码段
var url = 'data:text/html;charset=utf-8,';
var content = '<html><script>addEventListener("Hello",function(){alert("Hello")},false)</script></html>'
var tab = gBrowser.loadOneTab(url+encodeURIComponent(content), {inBackground: false});
tab.addEventListener("load", function(){
var evt = new tab.linkedBrowser.contentWindow.CustomEvent("Hello");
tab.linkedBrowser.contentWindow.dispatchEvent(evt);
}, false);
相关文章:
- firefox插件和dev/panel之间的通信
- firefox插件:退出不工作的应用程序观察器
- Firefox插件-如何发出http请求
- Firefox插件SDK:在侧边栏和主脚本之间通信对象
- Firefox插件:保存到文本文件的HTTP日志,其中包含时间、用户名、计算机名;t创建文本文件
- 在Firefox插件中注册控制台服务侦听器
- Bug修复放弃了Firefox插件Wikilook
- 参考Firefox插件's install.rdf em:xul文件中的版本
- Firefox插件忽略iframe
- 如何从Greasemonkey脚本创建Firefox插件
- 我的Firefox插件和跨域https存在问题
- FireFox插件sdk页面工作正则表达式
- 如何在Firefox插件中向子进程发送消息,如Chrome原生消息
- Firefox插件:同步通信
- 从firefox插件访问文件系统/目录路径
- 如何在Firefox插件中使用来自外部URI的contentScriptFile
- Firefox插件:如何根据平台设置默认首选项
- Firefox插件-在提交之前捕获post变量[no-enctype]
- 在尝试SE OAuth初始化时,Firefox插件中出现channelUrl错误
- 通过注册表安装的Firefox插件是否可以使用updateURL