2

jQuery 1.9.1 の .focus() は、毎回 iframe にフォーカスしません。たとえば、1 回目はピントが合う、2 回目はピントが合わない、3 回目はピントが合う、4 回目はピントが合わない、などです。

問題をテストするために、この 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

4 に答える 4

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


});
于 2013-08-14T19:40:24.473 に答える
0

これは回避策のようです:

$("#focusButton").click(function(e){
    if (!$("#textEditor").is(":focus"))
        $("#textEditor").focus();
});
于 2013-08-14T19:41:30.697 に答える
0

最初にフォーカスを別のものに手動でリダイレクトしてから、フォーカスを元に戻すことができます。

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

これがベスト コーディング プラクティスと一致するかどうかはわかりませんが、機能します。

于 2013-08-14T19:39:21.313 に答える
-1

クロムでは、フォーカスはトグルとして機能するようです。

$(document).ready(function(){
var editor = (textEditor.contentDocument) ? textEditor.contentDocument : textEditor.document;
editor.designMode = "on";

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


});
于 2013-08-14T19:44:25.777 に答える