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

时间:2012-07-10 12:53:06

标签: ckeditor selection

我有一个小代码来选择CKEditor中的文本。为此我在javascript中使用以下代码。

        var docx = editor.document;
        var elementx = docx.getById(id);
        editor.getSelection().selectElement(elementx);
        editor.getSelection().scrollIntoView(true);

它在Mozilla Firefox中工作正常。但是在IE9中它会抛出一个错误,因为selectElement不是一个对象。所以我检查了代码,发现getSelection()具有空值。请帮我解决一下。 我在各个网站上尝试了一些答案,即使在CKEditor四分钟也没有帮助我。

2 个答案:

答案 0 :(得分:5)

这是正确的解决方案:

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();

我在http://ckeditor.com/demo上的Firefox,Chrome和IE8上通过控制台对此进行了测试,结果确实如此。

答案 1 :(得分:0)

这可能有用。

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();