CKEditor verliert Inhalte, wenn er aus dem DOM entfernt und erneut hinzugefügt wird.
CKEditor ist ein Rich-Text-Editor, der einen Iframe mit einem bearbeitbaren Text verwendet.
Ich muss ein Element, das eine CKEditor-Instanz enthält, vorübergehend von meiner Seite entfernen und später beliebig oft wieder hinzufügen.
ProbleLeider scheint dies dazu zu führen, dass der iFrame zurückgesetzt wird. Wenn der Editor ursprünglich den Rich-Text-Inhalt und ein bearbeitbares Textelement enthielt, ist der iframe-Text nach dem Hinzufügen des Editors zur Seite leer und kann nicht mehr bearbeitet werden.
FragIch hoffe, jemand kann erklären, warum dies geschieht und wie ich den CKEditor neu initialisieren kann, nachdem ich ihn wieder zum DOM hinzugefügt habe. Ich habe die Dokumentation durchsucht und noch keine Antwort gefunden.
Die Instanz zerstören und neu erstellen istmöglic, aber es werden einige wesentliche Änderungen an unserer Architektur erforderlich sein. Ich würde das lieber vermeiden, wenn möglich. (Obwohl "es gibt keine andere Option" eine akzeptable Antwort ist, wenn sie wahr ist.)
BeispieHier ist eine extrem vereinfachte Version meines Codes, die das Problem neu erstellt:
CKEDITOR.replace('text');
var wrapper = $("#wrapper"),
parent = $("#parent");
// Immediately after creating the CKEditor instance,
// it is possible to remove and append the editor
hideshow();
// Remove and append some moments after the page load causes
// the content of the CKEditor to be lost (and not editable)
$('#hideshow').click(hideshow);
// (I'm guessing this is because the click event happens
// sometime after the editor is initialized.)
function hideshow(){
wrapper.remove();
parent.append(wrapper);
}
http: //jsfiddle.net/cyborgx37/f496p7us
Was kann ich zum @ hinzufüghideshow
Funktion oben, um den Inhalt meines Editors wiederherzustellen?