【发布时间】:2016-06-22 12:47:08
【问题描述】:
我正在尝试从 <iframe> 中侦听父文档在父文档上触发的事件
在父窗口中:
$(document).on('MyNameSpace.MyEvent', function() {
console.log('Event received in parent');
});
$(document).trigger('MyNameSpace.MyEvent');
在 iframe 中:
//test1
$(parent.document).on('MyNameSpace.MyEvent', someFunction);
//test2
parent.$(document).on('MyNameSpace.MyEvent', someFunction);
var someFunction = function() {
console.log('Event received in Iframe');
};
当事件在父文档上触发时,上述两个测试都无法触发。仅控制台输出:
Event received in parent
我怎样才能实现所需的行为?
注意事项
- iframe 和父级都在同一个域中。
- 在用户交互(例如点击)之后,在父级和 iframe 的 DOM 完全加载之后触发。
- 需要旧版浏览器支持 (IE8+)
【问题讨论】:
-
页面和 iframe 是否在同一个域中?
-
是的,始终用于此实现。
-
似乎应该可以,但我也试过了。可以使用 postMessage API
-
很想,但它需要支持旧版浏览器...
-
IE 8 有对 iframe 的 postMessage 支持,你肯定不支持任何旧版本
标签: javascript jquery iframe