Каков наилучший способ установить курсор / позицию каретки? - PullRequest
31 голосов
/ 10 августа 2009

Если я вставляю контент в текстовую область, кооптированную TinyMCE, каков наилучший способ установить положение курсора / каретки?

Я использую tinyMCE.execCommand("mceInsertRawHTML", false, content); для вставки содержимого, и я хотел бы установить курсор в конец содержимого.

И document.selection, и myField.selectionStart не будут работать для этого, и я чувствую, что это будет поддерживаться TinyMCE (через что-то, чего я не могу найти на их форуме), или это будет действительно безобразный хак.

Позже: Становится лучше; Я только что понял, что когда вы загружаете TinyMCE в WordPress, он загружает весь редактор во встроенном фрейме.

Позже (2): Я могу использовать document.getElementById('content_ifr').contentDocument.getSelection();, чтобы получить выделение в виде строки, но не объект выделения, для которого я могу использовать getRangeAt(0). Делая успехи понемногу.

Ответы [ 12 ]

0 голосов
/ 19 июня 2019

Я вставляю html-контент в текущую позицию каретки (не оставаясь в этом родительском html-элементе) следующим образом:

editor.insertContent( '<div>My html inserted code here...</div>' + '&nbsp;' , {format: 'html'} );

Это пустое пространство в конце будет гарантировать, что дополнительный напечатанный текст будет помещен вне вставленного элемента div.

0 голосов
/ 12 февраля 2014

Это решение, которое работает для меня:

// params: 
//   $node: jquery node with tinymce loaded 
//   text: text to set at then before caret
function setTextAndCaretToEnd($node, text) {
     var ed = window.tinyMCE.get($node.attr("id"));
     ed.focus();
     ed.selection.setContent(text);
}
...