【问题标题】:jQuery bind a click event within two iframesjQuery 在两个 iframe 中绑定一个点击事件
【发布时间】:2013-05-20 21:53:30
【问题描述】:

我有一个包含聊天程序(第三方)的页面,它在 iframe 中包含一个聊天窗口。所以现在我想在父文档中绑定按钮点击事件。

下面是层次结构:-

主文档 > iframe > iframe >聊天窗口按钮(将此按钮绑定到祖父 文件)

我试过这段代码

<script>
$(window).ready(function($){

    var frameWindow = $('#livservMiddleFrame').get(0).contentWindow;
    console.log(frameWindow.document.body.innerHTML);

});
</script>

这给了我第一个 iframe HTML 的输出,这只是一个尝试。我不知道这是否可能,或者我们是否可以通过一些劫持来获得它。

提前致谢。

【问题讨论】:

    标签: jquery iframe bind


    【解决方案1】:

    根据我对 iframe 的个人经验,我发现使用纯 JS 来“获取”iframe 对象更可靠。假设你有 DOM > iframe1 > iframe2 > chat-button,这就是你获取windoe对象的方式:

    var frame1Win = window.frames["iframe1"].window; // "iframe1" is iframe name, not id
    var frame2Win = frame1Win.frames["iframe2"].window;
    

    PS:根据您的浏览器,您可能必须使用 contentWindow。

    您可以通过以下方式使用 JQuery 附加点击事件

    $(frame2Win).find("#chat-button").on("click",function() {
      // do something
    });
    

    【讨论】:

    • 问题是第二个或最后一个 iframe 没有 name 属性是它们的任何替代项
    • 在这种情况下,您可以将帧用作数组,例如:frame[0]。我希望 iframe1 中的 iframe2 数量是固定的。
    【解决方案2】:

    您不能使用 javascript 或 jquery 在 iframe 中进行更改。但是您可以再次检查以下代码。可能对你有帮助

    $(document).ready(function() {
        $('iframe').contents().find('button').click(function() {
    
    });
    });
    

    【讨论】:

    • 这适用于第一个 iframe 按钮,不适用于 iframe 中的 iframe
    • 你可以试试 $('iframe iframe')
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-11
    • 2014-07-04
    • 2012-10-21
    相关资源
    最近更新 更多