編集不可能な内容をテキストフローに挿入するCKEditorプラグインの開発に問題があります。私は範囲関数を利用しようとしてきましたが、ドキュメンテーションが恒星ではないのでほとんど成功しませんでした。だから、いくつかのテキストを与えられた、プラグインのインサートを言うことができます「[[編集不可のものが]]」とし、WYSIWYG表示時にスパンでそれがカラーでスタイリングできるようにすることをラップ:編集不可能な要素を挿入した後のCKEditorカーソル位置
<p>This is some text[[uneditable stuff here]]</p>
最初に挿入するとき編集不可能なものであれば、ユーザーは入力を続行したり、Enterを押して新しい行を入力したりすることができます。 (私はここに来た:How to set cursor position to end of text in CKEditor?)を次のコードでは、Firefoxで動作しますが、(自然に)ないIE9、8、または7:
var s = editor.getSelection();
editor.insertElement(e); // element 'e'= a span created earlier
var p = e.getParent();
s.selectElement(p);
var selected_ranges = s.getRanges();
selected_ranges[0].collapse(false); // false = to the end of the selected node
s.selectRanges(selected_ranges); // putting the current selection there
それでは、私は起こるしたいことは、カーソルが位置に行くことです「^」 :新しい要素が行の最後ではない場合
<p>This is some text<span>[[uneditable stuff here]]</span>^</p>
することは、それを作成した後、カーソルはここに行く必要があります。
<p>This is some text<span>[[uneditable stuff here]]</span>^ with more text after the new element</p>
FFでは、新しい要素の後の位置ではなく、行末にカーソルを置くことができます。 IEでは、カーソルはまだ新しいSPANの中に入っていますが、入力するとスパンのCSSカラーで表示され、SOURCEビューに切り替えるとテキストは消えます(編集不可能なスパンなので)。
私はrange.setStartAfterメソッドがあると知っていますが、FF/Chromeでもそれを完全に動作させることはできませんでした。
誰かがCKEditorで範囲と選択方法を使用する上で本当に良いハンドルを持っていますか?私は知っている私はしないでください!
editor.insertElementを使っているだけで間違っていると思うようになり、私は理解していないFakeElement(insertBogus?)関数について学ぶ必要があります。リンクや画像などのストックプラグインにはこの問題がないようです。
私は今この問題を解決しようとしています。あなたが投稿して以来、あなたはそれを成功させましたか? – coyotesqrl