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() が null 値を持っていることがわかりました。解決方法を教えてください。CKEditor fourms でさえ、さまざまなサイトで提供されたいくつかの回答を試してみましたが、何も役に立ちませんでした。

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

これをFirefox、Chrome、IE8のコンソールからhttp://ckeditor.com/demoでテストしたところ、機能しました。

于 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 に答える