选择后如何插入节点?

时间:2018-08-25 19:41:33

标签: javascript ckeditor

我需要将选择内容包装在注释节点中,以便以后可以对其进行解析。

此脚本在CK-Editor插件中执行,但是我相信selectionrange的工作方式是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 :(得分:1)

尝试此操作以在原始选择之后选择一个新的空白范围。唯一的缺点是您将丢失原始选择。

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();