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

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

在打开 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');                      

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

【问题讨论】:

标签: jquery


【解决方案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上测试了这个功能,成功了,谢谢
    猜你喜欢
    • 1970-01-01
    • 2012-12-07
    • 2017-12-05
    • 2011-01-04
    • 2011-04-01
    • 2011-12-21
    • 2011-11-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多