如何触发从 iframe 到其父元素的点击事件?

Posted

技术标签:

【中文标题】如何触发从 iframe 到其父元素的点击事件?【英文标题】:how to trigger a click event from within an iframe to an element of its parent? 【发布时间】:2012-08-18 06:14:04 【问题描述】:

在打开 iframe 之前,我在父页面上尝试了以下代码。

jQuery('iframe').contents().bind('eventhandler', function()                
                alert('event was fired');
        ); 

我也试过了

jQuery(document).bind('eventhandler', function(e) 
alert('event was fired');
); 

在 iframe 中,我将此代码嵌入到点击事件中

jQuery(document).trigger('eventhandler');                      

但它不起作用我在这里做错了吗?

【问题讨论】:

trigger click event in iframe parent window的可能重复 【参考方案1】:

如果你可以控制两者的来源,你可以这样做

How to communicate between iframe and the parent site?

【讨论】:

【参考方案2】:

您需要从 iframe 中引用父文档。 这应该可以满足您的需求:

index.html:

<iframe src="iframe.html"></iframe>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script>
$(function()
    $(document).on('eventhandler', function()                
        alert('event was fired');
    );
); 
</script>

iframe.html:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script>
$(function()
    parent.$(parent.document).trigger('eventhandler');  
);
</script>

【讨论】:

ye 它的工作thanx!,我希望我不会在使用 IE 或 Chrome 时遇到任何问题,我还没有测试它。仅在火狐上 如果您从服务器(apache 或任何其他)运行它,它应该可以在任何地方运行。唯一的问题是,当 iframe(以及 iframe 内容和 jquery)在父 jquery 之前加载时,不太可能发生,但我假设您没有像我的示例中那样触发事件“onload”:-) 不,它工作得很好。我将第一个事件添加到就绪状态,然后将第二个事件添加到在 iframe 中单击并起作用的按钮上。谢谢 @tborychowski 你拯救了我的一天兄弟.. :) 非常感谢,我在chrome上测试了这个功能,成功了,谢谢

以上是关于如何触发从 iframe 到其父元素的点击事件?的主要内容,如果未能解决你的问题,请参考以下文章

在 iOS 设备上的 iframe 中未触发 Click/Tap 事件

vue怎么触发元素的原生事件

iframe 内的 onload 事件仅触发一次

触发从 iframe 到父文档的自定义事件

鼠标移动到一个元素上,会触发该元素的一个世界,jquery中表示该事件的方法是?

如何在父页面内触发iframe的元素