Перемещение курсора в конец строки после поиска и замены в CKEditor

#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, Suggestions   'amp;nbsp;');
editor.setData(replaced_text); 
var range = s.getRanges()[0];
range.moveToBookmark(bookmarks[0]);
range.select();
  

Он отлично работает на моем локальном компьютере, но как только я запускаю этот код в производство, я получаю сообщение об ошибке в строке — range.moveToBookmark(закладки [0]); и курсор переходит к началу строки.

Ошибка:

 Uncaught TypeError: Cannot read property 'getParent' of null
  

и указывает на эту строку в ckeditor.js файл

 setStartBefore: function(a) {
  this.setStart(a.getParent(), a.getIndex())
},
  

Из того, что я вижу, обе версии ckedtor.js те же самые, и никакие другие файлы не изменились.

В Google нет ничего, что указывало бы на причину, поэтому надеюсь, что у кого-то здесь может быть идея.

Приветствия

Комментарии:

1. обновление — исходный код в CKEditor выглядит так <p> просто <span>, как раз два три amp; nbsp; amp;nbsp;</p></span> он не перемещает конец строки и не удаляет закладку

Ответ №1:

изменено выше, и теперь оно работает отлично

 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   'amp;nbsp;');
editor.document.getBody().setHtml( replaced_text );
typedchars = '';
restoreCursorLocation( editor );