2013-11-07 3 views
2

Я использую CKEditor 4.0сохранение и восстановление позиции курсора после REINIT CKEditor

Я знаю getRanges() метод, я называется CKEditor: set cursor/caret positon

Но мой сценарий

1) Получить позицию курсора в редакторе

2) Получить данные редактора

3) уничтожить редактор и снова создать новый один

4) Установите сохраненные данные в новый редактор

5) Установите положение кузтора с шага 1, а затем вставьте требуемый элемент.

У меня есть два div, которые работают как вкладки (не вкладка jquery), одна вкладка поддерживает редактор и другой плагин обработки изображений, который доставляет обработанное изображение в редактор.

, когда пользователь переключает вкладку, будет отображаться другая вкладка (я показал скользящий переход).

Нажмите на вкладку плагина изображения, чтобы уничтожить анимацию анимации редактора, после того, как щелчок на вставке перейдет на вкладку редактора, а затем изображение будет вставлено в новый инициированный редактор.

Вот что я пробовал:

/* this is backup */ 
sel = editor.getSelection(); 
ranges = sel.getRanges(); 
editor_content = editor.getData(); 
editor.destroy(); 

Теперь воссоздать редактор и восстановить подпорку

editor = CKEDITOR.replace("descr", {resize_enabled : false}); 

Теперь я хочу, чтобы восстановить выбор и диапазоны для этого редактора, так что я могу вставить новый HTML в восстановленном положении

+0

Я попытался получить диапазоны выбора-> сохранить его в переменной, а затем установить этот сохраненный диапазон для вновь созданного редактора. Но он не работал –

ответ

1

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

old_data = editor.getData(); 
/* now add   placeholder at cursor position*/ 
editor.insertHtml('<div id="my_placeholder" style="display:none;"></div>'); 
data_with_placeholder = editor.getData(); 

editor.destroy(); 

/*now code before creating new instance of editor*/ 
if(new_html_recieved){ 
     /*replace html over placeholder ->create new editor -> set data with newly inserted html */ 

    $('body').append('<div id="processing_div"></div>'); 
    $('#processing_div').append(data_with_placeholder) 
      .find('#my_placeholder') 
      .replaceWith(new html); 
    data_with_placeholder = $('#processing_div').html(); 
    editor = CKEDITOR.replace("descr", {resize_enabled : false}); 
    editor.setData(data_with_placeholder); // here user will see html inserted at cursor position 
}else{ 
    editor.setData(old_data); 
} 
Смежные вопросы