将焦点设置为在焦点CKEditor之后结束

Gra*_*rck 6 javascript cursor caret selection 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();
    }
  }
});
Run Code Online (Sandbox Code Playgroud)

Kee*_*ker 5

经过一番摆弄后,我让它可以使用以下代码:

$(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
    }

});
Run Code Online (Sandbox Code Playgroud)

这个想法是:

  1. 获取根节点(不是主体)
  2. 前进到下一个节点,直到没有更多的节点可以前进到。
  3. 选择最后一个节点。
  4. 折叠它
  5. 设定范围