在IE中,CKEditor getSelection()返回空值

在IE中,CKEditor getSelection()返回空值,ckeditor,selection,Ckeditor,Selection,我有一个小代码来选择文本编辑器。为此,我在javascript中使用以下代码 var docx = editor.document; var elementx = docx.getById(id); editor.getSelection().selectElement(elementx); editor.getSelection().scrollIntoView(true); 它在Mozilla Firefox中运行良好,但在I

我有一个小代码来选择文本编辑器。为此,我在javascript中使用以下代码

        var docx = editor.document;
        var elementx = docx.getById(id);
        editor.getSelection().selectElement(elementx);
        editor.getSelection().scrollIntoView(true);
它在Mozilla Firefox中运行良好,但在IE9中,它会抛出一个错误,因为selectElement不是对象。所以我检查了代码,发现getSelection()有一个空值。请帮我解决这个问题。 我尝试了在各种网站上给出的一些答案,即使是在CKEditor fourms中也没有任何帮助。

这可能有用

var docx = editor.document;
var elementx = docx.getById(id);

var resRange = new CKEDITOR.dom.range( editor.document );
resRange.selectNodeContents( elementx );
resRange.collapse();
editor.getSelection().selectRanges( [ resRange ] );
resRange.endContainer.$.scrollIntoView();

这可能与IE9认为的对象有关。您是否尝试过选择不同的元素类型

也许抓住元素的父元素会给你一些IE9认为是对象的东西,你可以尝试以下方法:

var docx = editor.document;
var elementx = docx.getById(id);
var parentx = elementx.getParent();
parentx.scrollIntoView();

这是正确的解决方案:

var editor = CKEDITOR.instances.editor1;
editor.focus(); // Without this selection will be null on IE.

var element = editor.document.getBody().getLast(),
    selection = editor.getSelection();

selection.selectElement(element); // You have to reuse selection.
selection.scrollIntoView();

我在Firefox、Chrome和IE8上的控制台上对此进行了测试,效果良好。

感谢您的rply。。该'slection'变量仅具有null。getSelection()函数仍然只返回null。抱歉,我无法重现。你能提供更多的细节吗?我只是在尝试根据id选择特定的标签。当我选择它时,它应该突出显示并滚动到我想要的位置。好的,但这就是我所做的,我的代码对我有效。例如,您能否在JSFIDLE上创建一个示例,其中
getSelection()
返回空值?并指定它发生在哪个浏览器上。它只发生在IE中。IE版本9只有我检查过。非常感谢你花时间阅读我的所有问题。我不知道为什么我总是得到所有代码的错误。。U'r代码还提供了一个示例,表明selectRanges()不是对象错误。请查看添加到我的答案中是否有帮助。