Javascript 无法将ckeditor 4选择移动到开头

Javascript 无法将ckeditor 4选择移动到开头,javascript,ckeditor,Javascript,Ckeditor,在stackoverflow和其他地方,我一直在探索许多解决方案,试图让ckeditor 4在我使用ckeditor的InsertHtml函数以编程方式添加了许多页面后滚动到顶部。在添加html(看起来不错)之后,我想将光标定位在开头 以下是我尝试过但没有成功的多种方法之一: function MoveCaretToStart(myEditor) { var range = new CKEDITOR.dom.range( editor.document ); range.sele

在stackoverflow和其他地方,我一直在探索许多解决方案,试图让ckeditor 4在我使用ckeditor的InsertHtml函数以编程方式添加了许多页面后滚动到顶部。在添加html(看起来不错)之后,我想将光标定位在开头

以下是我尝试过但没有成功的多种方法之一:

function MoveCaretToStart(myEditor) {
    var range = new CKEDITOR.dom.range( editor.document );
    range.selectNodeContents(editor.document.getBody());
    range.moveToElementEditStart(range.root);  // also tried range.collapse(true);
    range.select();
}
...
MoveCaretToStart(CKEDITOR.instances['myEditor']);  // which already has contents in it
这不会引发任何错误,但也不会移动光标位置(光标仍位于文档末尾)。我原以为这件事很容易,但事实并非如此。谢谢你的帮助

11月1日更新: 我只是做了以下测试:创建了一个简单的html页面,只有一个文本区域,删除了所有额外的插件。我显示页面,在编辑器中输入文本(工作正常),然后使用JS控制台调用MoveEditorToBeginning();什么也没发生,控制台回显“未定义”。我受阻了。以下是整个html页面源代码(使用CkEditor 4.22):


//
函数MoveEditorCarettoBeging(){
var theEditor=CKEDITOR.instances['docBody'];
var body=theEditor.document.getBody();
var range=new CKEDITOR.dom.range(body);
范围。选择节点内容(正文);
范围。塌陷(真);
var selection=theEditor.getSelection();
selection.selectRanges([range]);
}
以下是适合我的内容(
编辑器
在您的情况下将是
我的编辑器
):

以下是适合我的内容(
editor
在您的情况下将是
myEditor
):


不幸的是,在Chrome或Firefox中都不适用于我。如果我在创建文档后使用ckeditor,然后在任一浏览器中使用Javascript控制台调用我的“MoveEditorCaretToStart”函数,则ckeditor中不会发生任何事情,控制台会显示来自ckeditor代码的“undefined”消息。所以我很困惑。我应该提到,我的页面上有两个不同的ckeditor实例,但我看不出这会有什么影响。@GaryHillerson,你的ckeditor版本是什么?我的代码是4.2,上次我检查它时,它可以跨浏览器工作。我使用的是上周刚下载的4.22。我只是做了一个简单的测试,我只使用了一个CKEditor实例,并使用了标准的config.js(而不是我的定制版本)。我删除了除CKEDITOR文本区域之外的所有HTML,并删除了除CKEDITOR之外的所有Javascript。我的代码显示了一个空编辑器,它可以正常工作。我插入一大块html——手动或编程方式——然后调用“移动到开始”函数。它不起作用。啊。不过,谢谢你的帮助。不幸的是,无论是在Chrome还是Firefox中,它都不适用于我。如果我在创建文档后使用ckeditor,然后在任一浏览器中使用Javascript控制台调用我的“MoveEditorCaretToStart”函数,则ckeditor中不会发生任何事情,控制台会显示来自ckeditor代码的“undefined”消息。所以我很困惑。我应该提到,我的页面上有两个不同的ckeditor实例,但我看不出这会有什么影响。@GaryHillerson,你的ckeditor版本是什么?我的代码是4.2,上次我检查它时,它可以跨浏览器工作。我使用的是上周刚下载的4.22。我只是做了一个简单的测试,我只使用了一个CKEditor实例,并使用了标准的config.js(而不是我的定制版本)。我删除了除CKEDITOR文本区域之外的所有HTML,并删除了除CKEDITOR之外的所有Javascript。我的代码显示了一个空编辑器,它可以正常工作。我插入一大块html——手动或编程方式——然后调用“移动到开始”函数。它不起作用。啊。不过谢谢你的帮助。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<script type="text/javascript" src="ckeditor/ckeditor.js"></script>
</head>

<body>
<textarea cols="80" id="docBody" name="docBody" tabindex="1" accesskey="d" rows="10">    </textarea>
<script type="text/javascript">
//<![CDATA[
CKEDITOR.replace( 'docBody',
{
    removePlugins:  'elementspath,stylesheetparser,a11yhelp ,autosave,docprops,fakeobjects,find,image,link,magicline,pagebreak,pastefromword,scayt,specialchar,texttransform,wordcount,wsc',

});
//]]>

function MoveEditorCaretToBeginning() {
var theEditor = CKEDITOR.instances['docBody'];
    var body        = theEditor.document.getBody();
    var range       = new CKEDITOR.dom.range(body);
    range.selectNodeContents(body);
    range.collapse(true);
    var selection   = theEditor.getSelection();
    selection.selectRanges([range]);
}
</script>
</body>
</html>
var body = editor.document.getBody();
var range = new CKEDITOR.dom.range(body);
range.selectNodeContents(body);
range.collapse(true);
var selection = editor.getSelection();
selection.selectRanges([range]);