繁体   English   中英

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

[英].focus() doesn't focus when clicked twice

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

我首先明确地模糊了它的工作原理: 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();
    }
});


});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM