jqueryダイアログを使用してフォームを表示しています(AJAX経由で取得)。一部のフォームでは、テキストエリアに CKEditor を使用しています。エディターは、最初の読み込みで正常に表示されます。
ユーザーがダイアログをキャンセルすると、コンテンツを削除して、後のリクエストで新しく読み込まれるようにします。問題は、ダイアログがリロードされると、CKEditor がエディターが既に存在すると主張することです。
uncaught exception: [CKEDITOR.editor] The instance "textarea_name" already exists.
API には、既存のエディターを破棄するためのメソッドが含まれており、これが解決策であると主張する人々を見てきました。
if (CKEDITOR.instances['textarea_name']) {
CKEDITOR.instances['textarea_name'].destroy();
}
CKEDITOR.replace('textarea_name');
代わりに新しいエラーが表示されるため、これは機能しません。
TypeError: Result of expression 'i.contentWindow' [null] is not an object.
このエラーは、「replace()」ではなく「destroy()」で発生するようです。誰かがこれを経験し、別の解決策を見つけましたか?
既存のエディターを破棄して置き換えるのではなく、「再レンダリング」することは可能ですか?
更新 同じ問題を扱う別の質問がありますが、彼はダウンロード可能なテスト ケースを提供しています。