首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在不同的B2G/Firefox OS应用中注册事件

在不同的B2G/Firefox OS应用中注册事件
EN

Stack Overflow用户
提问于 2012-11-02 16:56:32
回答 1查看 301关注 0票数 1

我正在为Firefox OS的主屏幕创建一个小部件。我在B2G中将小部件分离为另一个应用程序,在主屏幕中,我将小部件的内容加载到iframe中。因为它来自不同的域,所以我修改了域以使它们相等,但当我注册事件处理程序时,它仍然不起作用:

(小部件是iframe对象,foo是我的函数。)widget.contentWindow.oncontextmenu = foo;

仍未调用我的处理程序来响应“contextmenu”事件。

然而,当我把widget模块放在homescreen模块中,并让它们成为一个web应用程序时,它就能正常工作。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-11-13 21:58:20

contentWindow不支持跨域访问。不同的应用程序有不同的起源。

如果您在homescreen应用程序中添加了mozbrowser iframe,则可以从该iframe中的URL加载您的小部件,并侦听iframe上的mozbrowsercontextmenu事件。

代码语言:javascript
复制
<iframe id="widget" mozbrowser=true></iframe>

var widget = document.getElementById('widget');
widget.addEventListener('mozbrowsercontextmenu', eventHandler);

有关如何处理contextmenu事件https://github.com/mozilla-b2g/gaia/blob/master/apps/browser/js/browser.js#L1021的示例,请参阅浏览器应用程序

这将需要添加“浏览器”权限到homescreen应用程序。

如果你想将它作为一个应用程序加载,那么你也需要在iframe上使用mozapp属性,并且需要指向该应用程序的清单。这就是系统应用程序中的窗口管理器如何将应用程序嵌入到iframe中。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13192098

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档