2

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

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

它在 Mozilla Firefox 中运行良好。但在 IE9 中它会引发错误,因为 selectElement 不是对象。所以我检查了代码,发现 getSelection() 有一个空值。请帮助我如何解决它。即使在 CKEditorfourms 中,我也尝试了在各个网站上给出的一些答案,但对我没有任何帮助。

4

2 回答 2

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 上的控制台上对此进行了测试,并且成功了。

于 2012-07-13T21:47:04.433 回答
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();
于 2012-07-12T12:37:20.890 回答