从iframe触发jQuery事件

loc*_*zak 17 iframe jquery

这是场景,我在iframe中发生了一些事件,直到现在一切都运行良好.我刚遇到问题,我想从iframe向父母发送一个事件.

我正在使用它从iframe触发事件:

$('body', window.parent.document).trigger('eventName');
//and I've also tried
$(window.parent.document).find('body').trigger('eventName');
Run Code Online (Sandbox Code Playgroud)

然后在父页面中我正在监听这样的事件:

$('body').bind('eventName', myFunction)
Run Code Online (Sandbox Code Playgroud)

我知道脚本会触发,因为我在触发器console.log之前和之后卡住了.iframe位于同一个域中,因此没有问题.

我可以像这样直接在父页面上调用一个函数:window.parent.functionName但我想知道使用基于事件的解决方案是否可行.

解决了

@cwolves答案很有效:

parent.$('body').trigger( 'eventName' );
Run Code Online (Sandbox Code Playgroud)

Mar*_*ahn 23

如果您在父框架中加载了jQuery,请尝试:

parent.$('body').trigger( 'eventName' );
Run Code Online (Sandbox Code Playgroud)

如果没有,试试这个,我不确定它是否会起作用,但我只是看了jQuery源代码并认为它​​可能:

var pBody = $( parent.document.body );
pBody.trigger( 'eventName', pBody.data() );
Run Code Online (Sandbox Code Playgroud)

(并且在绑定时做同样的事情eventName)据我所知,问题是jQuery正在使用来自本地页面的数据,这会导致问题,因为它看起来正在尝试从其他帧加载数据.换句话说,这是一个烂摊子,但也有data在接受PARAMS .bind,.trigger等等.