2011-12-21 12 views
0

編集可能なiframeがあり、iframe外のボタンをクリックしたときにカーソル位置にテキストを挿入したいと考えています。私はテキストを挿入するには、次のコードを使用しようとしています:デザインモードの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); 
}; 

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

答えて

0

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

jQueryライブラリを使用して、結合ボタンのクリックではiframeにバックフォーカスシフトすることができます。

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

を純粋なJavaScriptで、シフトフォーカスをそのようinsertAtCursor()を実行する前に:

document.getElementById('iframe').focus() 
+0

event.preventDefault()行を使用せずに作業するように提案したコードがあります。ただし、ボタンを押すたびにiframeのフォーカスが失われます。テキストは適切な場所に挿入されますが、ユーザーが入力しようとするとiframeには入りません。これと戦うために、私はこの行を追加しようとしました:if(document.activeElement.id!= 'home_codeframe'){$( '#home_codeframe')。 }。しかし、これはうまくいかなかった。どのようにこれを修正するための任意の考え?ありがとうございました。 –

関連する問題