Как выделить данный текст в TinyMCE? - PullRequest
1 голос
/ 04 декабря 2011

У меня есть следующая фраза:

The birds fly in the sky near planes.
0123456789012345678901234567890123456
          1         2         3 

Как можно выделить in the sky с помощью TinyMce, если я знаю начало (14) и конец (23) фразы?

Я бы хотел использовать метод setRng, но я не нашел ни одного примера кода.

Ответы [ 2 ]

5 голосов
/ 05 декабря 2011

Вот решение, которое я придумал:

var ed = tinyMCE.activeEditor;
var range = ed.selection.getRng();
range.setStart(textNode, start);
range.setEnd(textNode, end);
ed.selection.setRng(range); 

Где:

  • textNode может быть текстовым узлом DOM, который вы можете получить с помощьюgetElementById или любые другие свойства сокращения (parent, nextSibling и т. Д.)
  • начало и конец являются соответственно началом и концомтекст, который вы хотите выбрать

Я предпочитаю это решение, потому что я использую только tinyMCE API.Я не полагаюсь на объекты и методы, которые могут меняться (в поведении, в ошибках ...) от браузера к браузеру.

2 голосов
/ 04 декабря 2011

Попробуйте:

var range = document.createRange();
var start = document.getElementById('tinymce');
//var textNode = start.getElementsByTagName('p')[0].firstChild;
//edited
var textNode = start.getElementsByTagName('your_tag_where_you_have_the_text')[0].firstChild;
range.setStart(textNode, 14);
range.setEnd(textNode, 23);
window.getSelection().addRange(range);
...