.focus()不会'单击两次时无法聚焦.jQuery 1.9.1中的

.focus() doesn't focus when clicked twice

本文关键字:聚焦 中的 jQuery 不会 单击 focus 两次      更新时间:2023-09-26

.focus()不会每秒都关注一个iframe。例如,它第一次聚焦时有效,第二次不起作用,第三次有效,第四次无效,等等

我创建了这个jsFiddle来测试这个问题:http://jsfiddle.net/QVuhR/1/。以下是jsfiddle的代码:

Javascript代码:

$(document).ready(function(){
    var editor = (textEditor.contentDocument) ? textEditor.contentDocument : textEditor.document;
    editor.designMode = "on";
    $("#focusButton").click(function(e){
        $("#textEditor").focus();
    });
});

HTML:

<button id="focusButton">Focus Test</button>
<iframe id="textEditor"></iframe>

焦点在Firefox上运行良好,但在Chrome上不起作用。

Chrome是否有解决此错误的方法?

我首先通过显式模糊来实现它:http://jsfiddle.net/U8JGd/

$(document).ready(function(){
    var editor = (textEditor.contentDocument) ? textEditor.contentDocument : textEditor.document;
    editor.designMode = "on";
    $("#focusButton").click(function(e){
        $("#textEditor").blur();
        $("#textEditor").focus();
    });

});

您可以尝试手动将焦点重定向到其他位置,然后将焦点返回:

$("#focusButton").click(function(e){
    $("#focusButton").focus();
    $("#textEditor").focus();
});

不确定这是否符合最佳编码实践,但它确实有效。

这似乎是一个变通方法:

$("#focusButton").click(function(e){
    if (!$("#textEditor").is(":focus"))
        $("#textEditor").focus();
});

在chrome中,焦点似乎起到了切换的作用。

$(document).ready(function(){
var editor = (textEditor.contentDocument) ? textEditor.contentDocument : textEditor.document;
editor.designMode = "on";
$("#focusButton").click(function(e){
    if(!$("#textEditor").is(":focus"))
    {
    $("#textEditor").focus();
    }
});

});