iframe在父文档中监听事件

时间:2016-03-08 14:11:31

标签: javascript jquery iframe

我试图在<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

如何实现理想的行为?

备注

  1. iframe和parent都位于同一个域中。
  2. 在DOM完全加载父目录和iframe之后,在用户交互(例如点击)之后发生触发。
  3. 需要传统的浏览器支持(IE8 +)

1 个答案:

答案 0 :(得分:1)

尝试使用:

parent.$(parent.document).on('MyNameSpace.MyEvent', someFunction);

如果父支持jQuery,则上述解决方案有效。

从当前的iframe听父母,你必须使用'parent。$'。由于这是父iframe中的事件,因此您必须使用'parent.document'。