2011-12-21 1 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'). Focus(); }. Однако это не сработало. Любые мысли о том, как это исправить? Спасибо. –

Смежные вопросы