Установите курсор в конце после фокуса CKEditor

Возможный дубликат:
CKEditor – установить положение курсора до конца текста

У меня есть <div> с большим количеством контента. После щелчка по этому div загружается CKEditor для редактирования этого div.

Теперь я хотел бы установить каретку/курсор в конец содержимого после замены его редактором.

Мой код в настоящее время выглядит примерно так:

var editor = CKEDITOR.replace('content', {
  // Settings

  // Event listeners
  on: {
    instanceReady: function(evt) {
      var editor = evt.editor;

      // give focus (displays caret at the beginning of the content, not the end)
      editor.focus();
    }
  }
});

person Grad van Horck    schedule 05.10.2011    source источник


Ответы (1)


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

$(document).ready(function() {

    CKEDITOR.on('instanceReady', function(ev) {

        ev.editor.focus();

        var s = ev.editor.getSelection(); // getting selection
        var selected_ranges = s.getRanges(); // getting ranges
        var node = selected_ranges[0].startContainer; // selecting the starting node
        var parents = node.getParents(true);

        node = parents[parents.length - 2].getFirst();

        while (true) {
            var x = node.getNext();
            if (x == null) {
                break;
            }
            node = x;
        }

        s.selectElement(node);
        selected_ranges = s.getRanges();
        selected_ranges[0].collapse(false);  //  false collapses the range to the end of the selected node, true before the node.
        s.selectRanges(selected_ranges);  // putting the current selection there
    }

});

Идея такова:

  1. Получить корневой узел (не тело)
  2. Переход к следующему узлу, пока не останется узлов для перехода.
  3. Выберите последний узел.
  4. Свернуть
  5. Установить диапазон
person Kees C. Bakker    schedule 02.01.2012
comment
Отлично... Сработало :) (Забыли об этой функции, и мы решили не использовать эту функцию...) - person Grad van Horck; 02.01.2012
comment
Я тоже был готов сдаться, но мой босс очень-очень этого хотел :P - person Kees C. Bakker; 02.01.2012
comment
@KeesC.Bakker, надеюсь, вы мне поможете... Я запускаю ckeditor с помощью следующего внизу страницы: window.onload = function() { CKEDITOR.replace('Message'); }; Итак, где именно я могу поместить код, который у вас есть выше, чтобы это работало? В моем HTML-коде есть следующее: ‹textarea class=ckeditor id=Message name=Message›‹?=$Message;?›‹/textarea› И $Message выглядит следующим образом: ‹p›‹img alt= style=border -ширина: 0px; поплавок: справа; высота: 180 пикселей; ширина: 180 пикселей src=domain.com/image.jpg /›‹/p› - person Abela; 27.02.2014