Как вставить узел после выбора? - PullRequest
0 голосов
/ 25 августа 2018

Мне нужно обернуть выборку в узлах комментариев, чтобы потом ее можно было проанализировать.

Этот скрипт выполняется в плагине CK-Editor, но я считаю, что selection и range работают нативно для JavaScript.

Я могу просто вставить узел комментария в начале диапазона, но не могу понять, как добавить узел комментария в конец выделения.

Мой текущий код:

var selection = editor.getSelection();
var ranges = selection.getRanges();
var start_node = 'parsing_start';
var end_node = 'parsing_end';
var start_comment = new CKEDITOR.dom.comment(start_node);
var end_comment = new CKEDITOR.dom.comment(end_node);

ranges[0].insertNode(start_comment);

ranges[0].nextSibling().insertNode(end_comment); // how to do this???

1 Ответ

0 голосов
/ 26 августа 2018

Попробуйте выбрать новый пустой диапазон после исходного выбора. Единственным недостатком является то, что вы потеряете первоначальный выбор.

var selection = editor.getSelection();
var range = selection.getRanges()[0];
var start_node = 'parsing_start';
var end_node = 'parsing_end';
var start_comment = new CKEDITOR.dom.comment(start_node);
var end_comment = new CKEDITOR.dom.comment(end_node);

range.insertNode(start_comment);

var endNode = range.endContainer;
var endOffset = range.endOffset;
range.setStart(endNode, endOffset);
range.setEnd(endNode, endOffset);
selection.selectRanges([range]);

range.insertNode(end_comment);

editor.focus();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...