Javascript 在编辑器中查找并替换后,将光标移动到行尾

Javascript 在编辑器中查找并替换后,将光标移动到行尾,javascript,ckeditor,Javascript,Ckeditor,我在CKEditor 4中为自动更正功能编写了自己的插件,它允许您键入@abc,例如,它将替换为“简单到一二三”加上空格字符,并将光标放在空格后 这是更新字符串的插件的javascript代码: var s = editor.getSelection(); var bookmarks = s.createBookmarks(true); var data = editor.getData(); var replaced_text = data.replace(typedchars, Sugges

我在CKEditor 4中为自动更正功能编写了自己的插件,它允许您键入@abc,例如,它将替换为“简单到一二三”加上空格字符,并将光标放在空格后

这是更新字符串的插件的javascript代码:

var s = editor.getSelection();
var bookmarks = s.createBookmarks(true);
var data = editor.getData();
var replaced_text = data.replace(typedchars, Suggestions + ' ');
editor.setData(replaced_text); 
var range = s.getRanges()[0];
range.moveToBookmark(bookmarks[0]);
range.select();
它在我的本地机器上运行得很好,但当我将此代码投入生产时,我在行-range.moveToBookmark(bookmarks[0])上得到了一个错误并将光标移到行的开头

错误是:

Uncaught TypeError: Cannot read property 'getParent' of null
并指向ckeditor.js文件中的这一行

setStartBefore: function(a) {
  this.setStart(a.getParent(), a.getIndex())
},
从我所看到的两个版本的ckedtor.js都是相同的,没有其他文件被更改

谷歌上没有什么可以说明原因的,所以希望这里的人能有个想法


Cheers

在上面对其进行了修改,现在它可以完美地工作了

editor.focus();    
var storeCursorLocation = function( editor ) {
bookmark = editor.getSelection().createBookmarks( true );
};
var restoreCursorLocation = function( editor ) {
    editor.getSelection().selectBookmarks( bookmark );
};
storeCursorLocation( editor );
var data = editor.document.getBody().getHtml();
var replaced_text = data.replace(typedchars, Suggestions + ' ');
editor.document.getBody().setHtml( replaced_text );
typedchars = '';
restoreCursorLocation( editor );

更新-CKEditor中的源代码看起来像这样简单,因为它不会移动行的结尾,也不会删除书签