Chromeのiframeにフォーカスを設定する

Chromeで designMode = 'on' のiframe( id:
'chat'
)があります。

On keypressイベントを入力するiframeの内容を受け取りソケットに書き込む関数
send()を呼び出します。私の問題は、iframeをクリアすると、私はフォーカスを失うことです。

どのように私はiframeにテキストを入力し続けることができるようにフォーカスを設定するには?

function send(){
    var $iframe = $('#chat');
    var text = $iframe.contents().text() + "n";  

    socket.send(text);

   //When this is done, the focus is lost
   //If commented, the focus will not be lost
    $iframe.contents().find('body').empty();

   //My different failed attempts to regain the focus
    //$iframe.focus();
    //$iframe.contents().focus();
    //$iframe.contents().find('body').focus();
    //$iframe.contents().find('body').parent().focus();
    //$iframe[0].contentWindow.focus();

   //I've also tried all the above with timers
    //setTimeout( function(){ $('#chat').contents().focus(); }, 100);
}

私は他の質問で多くのソリューションを試しましたが、うまくいかないようです。

ベストアンサー

このトリックは、最初にボディに焦点を合わせ、 Range を作成することです。

var win = iframe.contentWindow;
var range = win.document.createRange();
range.setStart(win.document.body, 0);
range.setEnd(win.document.body, 0);
win.document.body.focus();
win.getSelection().addRange(range);

コメントする

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です