单击两次时,.focus()不会聚焦

时间:2013-08-14 19:36:36

标签: javascript jquery iframe focus

来自jQuery 1.9.1的

.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的此错误是否有解决方法?

4 个答案:

答案 0 :(得分:2)

我首先明确模糊了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();
    });


});

答案 1 :(得分:0)

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

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

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

答案 2 :(得分:0)

这似乎是一种解决方法:

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

答案 3 :(得分:-1)

在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();
    }
});


});