如何使用文本索引位置选择特定文本?
我在编辑器中有一个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]);
拜托,有人帮助我。
注意:
如果我使用文字节点概念,则不应选择该文字。
答案 0 :(得分:1)
请记住,CKEditor内容是HTML数据,它不是平面的,但更像是树结构,所以不可能只使用索引来设置选择。
正如您在range.setStart
和range.setEnd
的文档中所看到的,它需要两个参数startNode
/ endNode
和startOffset
/ 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 ] );