2011-12-21 58 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

对于影响代码插入的焦点位移,您是正确的。像这样执行insertAtCursor()之前

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

在纯JavaScript,转移重心:

使用jQuery库,你可以转移焦点回到IFRAME按钮的点击结合

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

我得到了你建议在不使用event.preventDefault()行的情况下工作的代码。但是,每隔一次按下按钮,iframe就会失去焦点。文本被插入到正确的位置,但如果用户尝试键入,则不会进入iframe。为了解决这个问题,我尝试添加这一行:if(document.activeElement.id!='home_codeframe'){$('#home_codeframe')。focus(); }。但是,这并没有奏效。有关如何解决这个问题的任何想法?谢谢。 – 2011-12-28 20:28:06