0

編集可能な iframe があり、ユーザーが iframe の外側にあるボタンをクリックしたときに、カーソル位置にテキストを挿入したいと考えています。次のコードを使用してテキストを挿入しようとしています。

function insertAtCursor(iframename, text, replaceContents) {
      if(replaceContents==null){replaceContents=false;}
      if(!replaceContents){//collapse selection:
         var sel=document.getElementById(iframename).contentWindow.getSelection()
         sel.collapseToStart()
      }
      document.getElementById(iframename).contentWindow.document.execCommand('insertHTML', false,     text);
};

ボタンをクリックするとフォーカスが変わるため、これは失敗していると思います。ただし、これを修正する方法がわかりません。ご協力ありがとうございました。

4

1 に答える 1

0

コード挿入に影響を与えるフォーカス シフトについては正しいです。

jQuery ライブラリを使用すると、ボタンのクリック バインディングでフォーカスを iframe に戻すことができます。

$('#button').click(function(event) {
    event.preventDefault();
    $('#iframe').focus();
    insertAtCursor('iframe', 'test-text', null);
});

純粋な JavaScript では、次のように insertAtCursor() を実行する前にフォーカスを移動します。

document.getElementById('iframe').focus()
于 2011-12-21T21:02:06.323 に答える