iFrame getFocus 不会触发

Posted

技术标签:

【中文标题】iFrame getFocus 不会触发【英文标题】:iFrame getFocus won't trigger 【发布时间】:2017-03-23 05:28:40 【问题描述】:

我有一个 iframe 如下:

<iframe name="richTextField" id="richTextField" style="border:#000 1px solid; width:700px; height:300px;"></iframe>

我有一些 javascript 应该在 iframe 获得或失去焦点时触发,但在 Firefox 上它不起作用,除非我在正手插入警报。脚本如下:

<script type="text/JavaScript">
    document.getElementById('richTextField').contentWindow.document.designMode="on";
    document.getElementById('richTextField').contentWindow.document.close();

    if(navigator.userAgent.indexOf("Firefox") != -1)
        //When alert below is removed, the blur/focus doesn't work in FireFox
        alert("what?");
        $("#richTextField").contents().bind('blur', function()
//            blur functions
            console.log("Firefox Blur");
        );
        $("#richTextField").contents().bind('focus', function()
//                focus functions
            console.log("Firefox Focus");
        );
     else 
        $("#richTextField").contents().find("body").blur(function()
//                blur functions
            console.log("Blur");
        );
        $("#richTextField").contents().find("body").focus(function()
//                focus functions
            console.log("Focus");
        );
    
</script>

【问题讨论】:

【参考方案1】:

我犯了一个简单的错误,即在文档准备好之前执行脚本。所以我不得不稍微改变一下javascript。所以我把上面的代码放在下面的代码中:

$(document).ready(function() 
    //Above code without the script tags and without the alert
);

【讨论】:

以上是关于iFrame getFocus 不会触发的主要内容,如果未能解决你的问题,请参考以下文章

媒体触发器结束 (Iframe)

TestCafe .click 不会触发 iFrame 中的 onClick 事件

将 iframe URL 更改为另一个协议会重新加载页面,但不会在从计时器触发时重新加载

jQuery - 更改 iframe src 时仅在第二次单击时触发

@focus @input @click 事件区别

当视频在页面上的 iframe 中完成时触发