我有一个小代码来选择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四分钟也没有帮助我。
答案 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();