CKEDITOR:使用开始,结束索引位置选择文本

时间:2017-11-11 07:05:14

标签: javascript jquery html ckeditor

如何使用文本索引位置选择特定文本?

我在编辑器中有一个para,我只是尝试使用索引位置选择一个Text,我该怎么做?

示例

<p>My Tes<b>ti</b>ng Point</p>

我想使用索引位置 4和11 选择测试。 我正在使用下面的代码来实现这一目标。但它根本不起作用。

    var editor = CKEDITOR.instances.editor1;
    range = editor.createRange();
    range.setStart(4);
    range.setEnd(11); 
    editor.getSelection().selectRanges([range]);

拜托,有人帮助我。

注意:

如果我使用文字节点概念,则不应选择该文字。

1 个答案:

答案 0 :(得分:1)

请记住,CKEditor内容是HTML数据,它不是平面的,但更像是树结构,所以不可能只使用索引来设置选择。

正如您在range.setStartrange.setEnd的文档中所看到的,它需要两个参数startNode / endNodestartOffset / endOffset。偏移量始终相对于特定元素设置,而不是绝对到内容的开头。

在您的情况下,您应首先找到特定元素,然后相对于这些元素设置偏移量:

var editable = editor.editable(),
    startNode = editable.findOne( 'p' ),
    endNode = startNode,
    range = editor.createRange();

range.setStart( startNode.getChild( 0 ), 4 ); // Get first child which is text node "My Tes".
range.setEnd( endNode.getChild( 2 ), 2 ); // Get third child which is text node "ng Point".
editor.getSelection().selectRanges( [ range ] );