jquery - 从 iframe 触发 jQuery 事件

标签 jquery iframe

场景如下,我在 iframe 内发生了一些事件,到目前为止一切都运行良好。我刚刚遇到了一个问题,我想将事件从 iframe 分派(dispatch)到父级。

我使用它来触发 iframe 中的事件:

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

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

$('body').bind('eventName', myFunction)

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

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

已解决

@cwolves 的回答效果很好:

parent.$('body').trigger( 'eventName' );

最佳答案

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

parent.$('body').trigger( 'eventName' );

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

var pBody = $( parent.document.body );
pBody.trigger( 'eventName', pBody.data() );

(绑定(bind) eventName 时执行相同的操作) 据我所知,问题是 jQuery 正在使用本地页面中的数据,这会导致问题,因为它看起来像是试图从其他框架加载数据。换句话说,这是一团糟,但是 .bind.trigger 等中接受了 data 参数。

关于jquery - 从 iframe 触发 jQuery 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6697364/

相关文章:

css - 我可以在我的网页中使用 css 而不是 iframe 吗?

javascript - 从代码更改 Switchery 复选框状态

javascript - 框架破坏者破坏者

javascript - iFrame 中的 Peoplesoft 屏幕

javascript - 如何在jquery中分割ajax的Response html

html - 弹出div在IE11中隐藏在iframe下

jquery - 使用 jQuery 阻止 iFrame 内的 F5

javascript - JQuery 数据表中的 TableTools 导出不起作用

jQuery:干净地处理来自 ajax 的错误状态代码

php - 使用 Jquery 和 Ajax 更新表