在 iframe 主体上设置焦点和模糊事件不适用于 Firefox

Posted

技术标签:

【中文标题】在 iframe 主体上设置焦点和模糊事件不适用于 Firefox【英文标题】:Setting focus and blur events on Iframe body not working with firefox 【发布时间】:2017-02-28 14:43:44 【问题描述】:

我创建了一个可编辑的 iFrame:

<iframe frameborder="0" id="editor"></iframe>

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

    $("#editor").contents().find("body").blur(function() // Blur functions );

    $("#editor").contents().find("body").focus(function()// focus functions );

</script>

焦点和模糊事件在 chrome 中被触发,但不适用于 firefox。

【问题讨论】:

【参考方案1】:

解析为:

<iframe frameborder="0" id="editor"></iframe>

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

if(navigator.userAgent.indexOf("Firefox") != -1)
    $("#editor").contents().bind('blur', function() // Blur functions );
    $("#editor").contents().bind('focus', function() // focus functions );
else
    $("#editor").contents().find("body").blur(function() // Blur functions );
    $("#editor").contents().find("body").focus(function() // focus functions );

</script>

对于 Firefox,它适用于在 contents() 上设置的焦点/模糊,而不是用于正文。

【讨论】:

不幸的是,Firefox 的代码对我不起作用,只有当我在这样的模糊/聚焦功能之前发出警报时:if(navigator.userAgent.indexOf("Firefox") != -1) alert("Firefox"); $("#editor").contents().bind('blur', function() // Blur functions ); $("#editor").contents().bind('focus', function() // focus functions );

以上是关于在 iframe 主体上设置焦点和模糊事件不适用于 Firefox的主要内容,如果未能解决你的问题,请参考以下文章

焦点引擎不适用于集合视图单元

IE输入元素焦点不适用于角度指令

如何隐藏和显示 SummerNote 工具栏以响应焦点和模糊事件

为啥在 iOS Safari Mobile (iPhone / iPad) 中没有触发模糊事件?

将焦点设置为 iframe 内容

样式不适用于 iframe 内容