CKEditor verliert Inhalte, wenn er aus dem DOM entfernt und erneut hinzugefügt wird.

Kontex

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.

Proble

Leider 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.

Frag

Ich 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.)

Beispie

Hier 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?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage