Ckeditor 查找和 select 文本
Ckeditor find and select text
我想做的是在单词上创建一个选择(类似于 CTRL+F on chrome) ,
我在这
var editor = CKEDITOR.instances.editor1;
var sel = editor.getSelection();
var element = sel.getStartElement();
var find = '[valor]';
var ranges = editor.getSelection().getRanges();
var startIndex = element.getHtml().indexOf(find);
if (startIndex != -1) {
ranges[0].setStart(element.getFirst(), startIndex);
ranges[0].setEnd(element.getFirst(), startIndex + find.length);
sel.selectRanges([ranges[0]]);
}
效果很好,只有 1 个问题。它只选择我所在行的文本,我希望它在所有 ckeditor 文本中找到第一个出现的文本
我终于可以解决这个问题了,我需要做的就是从编辑器中获取所有文本节点,然后在节点上搜索单词并将它们放入数组中,如下所示:
for ( i = textNodes.length; i--; ) {
text = textNodes[ i ];
index = text.getText().toLowerCase().indexOf( wordtosearch );
if ( index > -1 ) {
while (index > -1) {
range = editor.createRange();
range.setStart( text, index );
range.setEnd( text, index + wordtosearch.length);
ranges.push( range );
index= text.getText().indexOf( wordtosearch , index+wordtosearch.length );
}
}
}
我想做的是在单词上创建一个选择(类似于 CTRL+F on chrome) ,
我在这
var editor = CKEDITOR.instances.editor1;
var sel = editor.getSelection();
var element = sel.getStartElement();
var find = '[valor]';
var ranges = editor.getSelection().getRanges();
var startIndex = element.getHtml().indexOf(find);
if (startIndex != -1) {
ranges[0].setStart(element.getFirst(), startIndex);
ranges[0].setEnd(element.getFirst(), startIndex + find.length);
sel.selectRanges([ranges[0]]);
}
效果很好,只有 1 个问题。它只选择我所在行的文本,我希望它在所有 ckeditor 文本中找到第一个出现的文本
我终于可以解决这个问题了,我需要做的就是从编辑器中获取所有文本节点,然后在节点上搜索单词并将它们放入数组中,如下所示:
for ( i = textNodes.length; i--; ) {
text = textNodes[ i ];
index = text.getText().toLowerCase().indexOf( wordtosearch );
if ( index > -1 ) {
while (index > -1) {
range = editor.createRange();
range.setStart( text, index );
range.setEnd( text, index + wordtosearch.length);
ranges.push( range );
index= text.getText().indexOf( wordtosearch , index+wordtosearch.length );
}
}
}