かなり単純なページでCKeditor 3.4を実行しています。 document.main_form.submit()を呼び出したときに、textareaのコンテンツが送信されない問題が(ときどき)発生します。少し読んだ後、CKeditorが正しく破壊されていないようです。フォームを保存する前に手動で破棄しようとしましたが、呼び出すことができませんでした。奇妙なことに、それは時々機能しますが、他の機能はしません。私はChromeを使用しているので、物事が台無しになるかもしれませんが、Firefoxでも同じことが起こります。
CKeditorを適切に破棄して、常にPOSTでtextareaデータを送信する方法を教えてください。ありがとう!
私はこの問題を抱えていました。なんて痛い。
エディターインスタンスを適切に破棄するには、
if (CKEDITOR.instances.myInstanceName) CKEDITOR.instances.myInstanceName.destroy();
ドキュメントから ここ
ポストバックの前に、エディターのコンテンツを非表示フィールドに割り当てることで、コンテンツが不足している問題を解決しました。私はASP.Netを使用していますが、普遍的に機能するはずです。
送信ボタンのクライアント側クリックハンドラで、次を呼び出します。
if (CKEDITOR.instances.myInstanceName)
document.getElementById('hiddenField').value = CKEDITOR.instances.getData();
私はかつて、各サブビューごとに1つのCKEDITORインスタンスを持つangularjs ui-routerを使用しました。次のソリューションを使用して、UIビューを読み込むたびにインスタンスをクリアしました
for(name in CKEDITOR.instances)
{
CKEDITOR.instances[name].destroy()
}
私の状況では
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();
}
for(name in CKEDITOR.instances){ CKEDITOR.instances[name].destroy() }
Ckeditorによって作成されたすべてのインスタンスを破棄するためのコーディングに使用します