Ich verwende jquery-Dialoge, um Formulare zu präsentieren (abgerufen über AJAX). Auf einigen Formularen verwende ich einen CKEditor für die Textbereiche. Der Editor wird beim ersten Laden einwandfrei angezeigt.
Wenn der Benutzer den Dialog abbricht, entferne ich den Inhalt, damit er bei einer späteren Anforderung frisch geladen wird. Das Problem ist, dass der CKEditor nach dem erneuten Laden des Dialogfelds behauptet, der Editor sei bereits vorhanden.
uncaught exception: [CKEDITOR.editor] The instance "textarea_name" already exists.
Die API enthält eine Methode zum Zerstören vorhandener Editoren, und ich habe Leute gesehen, die behaupteten, dies sei eine Lösung:
if (CKEDITOR.instances['textarea_name']) {
CKEDITOR.instances['textarea_name'].destroy();
}
CKEDITOR.replace('textarea_name');
Dies funktioniert bei mir nicht, da ich stattdessen einen neuen Fehler erhalte:
TypeError: Result of expression 'i.contentWindow' [null] is not an object.
Dieser Fehler scheint eher bei "destroy ()" als bei "replace ()" aufzutreten. Hat jemand dies erlebt und eine andere Lösung gefunden?
Ist es möglich, den vorhandenen Editor neu zu rendern, anstatt ihn zu zerstören und zu ersetzen?
AKTUALISIERT Hier ist eine weitere Frage, die sich mit demselben Problem befasst, aber er hat einen Testfall zum Herunterladen bereitgestellt .