2

私は CKEDITOR 内でポジショニングに取り組んでいます。しかし、次のコードが時々機能しない理由をまだ理解できませんか?

    var range = new CKEDITOR.dom.range(editor.document);
    range.moveToElementEditablePosition(element, setToEnd);
    editor.getSelection().selectRanges([range]);

私が与えている要素の入力と関係があると思います。確信はないけど。

moveToElementEditbalePosition が機能するための要件を知っている人はいますか? 最後に入力を確認したのは SPAN 要素でした。

http://docs.ckeditor.com/#!/api/CKEDITOR.dom.range-method-moveToElementEditablePosition

または、より安全な (クロスブラウザー) ソリューションはありますか?

==== 編集 ====

エラーが見つかりました.それは新しい CKEDITOR.dom.range からのものです.

TypeError: b は未定義です

これは、editor.document が空であることを意味しますが、editor.document を見ると、いっぱいになっていますか?

エラーの後にもう一度範囲を設定しようとすると、次のエラーも表示されます: キャッチされていない例外: DOMException: INVALID_STATE_ERR

4

1 に答える 1

3

この HTML を試してください:

<p><span id="test">Text</span></p>

そして、このJS:

var e = CKEDITOR.instances.editor1;
var span = e.document.getById( 'test' );
var range = e.createRange();

range.moveToElementEditablePosition( span, 1 );
range.select();
e.insertText( 'FOO' );

range.moveToElementEditablePosition( span );
range.select();
e.insertText( 'BAR' );

結果は正しいようです:

<p><span>BARTextFOO</span></p>

他に事例はありますか?

于 2013-03-07T11:02:49.257 に答える