web-dev-qa-db-ja.com

CKEditorインスタンスを適切に破棄する方法は?

かなり単純なページでCKeditor 3.4を実行しています。 document.main_form.submit()を呼び出したときに、textareaのコンテンツが送信されない問題が(ときどき)発生します。少し読んだ後、CKeditorが正しく破壊されていないようです。フォームを保存する前に手動で破棄しようとしましたが、呼び出すことができませんでした。奇妙なことに、それは時々機能しますが、他の機能はしません。私はChromeを使用しているので、物事が台無しになるかもしれませんが、Firefoxでも同じことが起こります。

CKeditorを適切に破棄して、常にPOSTでtextareaデータを送信する方法を教えてください。ありがとう!

25
Shane Reustle

私はこの問題を抱えていました。なんて痛い。

エディターインスタンスを適切に破棄するには、

if (CKEDITOR.instances.myInstanceName) CKEDITOR.instances.myInstanceName.destroy();

ドキュメントから ここ

ポストバックの前に、エディターのコンテンツを非表示フィールドに割り当てることで、コンテンツが不足している問題を解決しました。私はASP.Netを使用していますが、普遍的に機能するはずです。

送信ボタンのクライアント側クリックハンドラで、次を呼び出します。

if (CKEDITOR.instances.myInstanceName)
    document.getElementById('hiddenField').value = CKEDITOR.instances.getData();
38
Laramie

私はかつて、各サブビューごとに1つのCKEDITORインスタンスを持つangularjs ui-routerを使用しました。次のソリューションを使用して、UIビューを読み込むたびにインスタンスをクリアしました

for(name in CKEDITOR.instances)
{
    CKEDITOR.instances[name].destroy()
}
14
Bernie GGGG

私の状況では

CKEDITOR.instances.myInstanceName.destroy();

私がjquery dialogでCKEditorを開いて、いくつかのアイテムをダブルクリックしたので、助けにはなりませんでした。エディターを閉じてからもう一度開くと、コードがクラッシュしました。
ソリューションが使用していた

CKEDITOR.instances.myInstanceName.destroy(false);

更新されたDOM要素( ドキュメントへのリンク )。

この単純なコードを使用します。私のテキスト領域IDはeditor1です。
またはconsole.log(CKEDITOR.instances.editor1);で確認することもできます

if (CKEDITOR.instances.editor1) {
     CKEDITOR.instances.editor1.destroy();
}
6
sandeep kumar

for(name in CKEDITOR.instances){ CKEDITOR.instances[name].destroy() }

Ckeditorによって作成されたすべてのインスタンスを破棄するためのコーディングに使用します

5
ashish naghate