5

「タブ」を使用して一度に複数の画面を表示するより大きなプロジェクトに CKEditor を統合しています。タブを切り替えるときは、CKEditor も含むタブ div を切り離します。再度取り付けると、CKEditorが壊れています。表示されますが、テキストが失われ、テキストを書き込むことができなくなります。

コード例:

<script src="http://ckeditor.com/apps/ckeditor/4.2/ckeditor.js?mriyyd"></script>
<div id="section1">
    <script>
        CKEDITOR.appendTo('section1',
        null,
            '<p>This is some <strong>sample text</strong>.</p>');
    </script>
</div>
<script>
    var s = document.getElementById('section1');
    var sP = s.parentNode;
</script>
<button onClick="sP.removeChild(s);">Detach</button>
<button onClick="sP.appendChild(s);">Attach</button>

ここで試すことができます: http://jsfiddle.net/kxtxz/6/

誰かが同様の問題を経験し、最終的に解決しましたか?

4

1 に答える 1

3

CKEditor インスタンスの背後にあるロジックは DOM 構造に大きく依存しているため、変更すると実際に壊れてしまいます。

しかし、それには簡単な解決策があります。デタッチする前に最初にデータを取得します。

var savedData = CKEDITOR.instances.instanceName.getData();

次に、基本的に次のように呼び出します。

CKEDITOR.instances.instanceName.destroy();

デタッチするとき、エディターを再作成して元に戻します

CKEDITOR.appendTo( 'section1', null, savedData );

付けるとき。

于 2013-08-16T20:04:53.683 に答える