Sto usando le finestre di dialogo jquery per presentare i moduli (recuperati tramite AJAX). Su alcuni moduli sto usando un CKEditor per le textareas. L'editor viene visualizzato correttamente al primo caricamento.
Quando l'utente annulla la finestra di dialogo, rimuovo i contenuti in modo che vengano caricati nuovamente in una richiesta successiva. Il problema è che, una volta ricaricata la finestra di dialogo, CKEditor afferma che l'editor esiste già.
uncaught exception: [CKEDITOR.editor] The instance "textarea_name" already exists.
L'API include un metodo per distruggere gli editor esistenti e ho visto persone affermare che questa è una soluzione:
if (CKEDITOR.instances['textarea_name']) {
CKEDITOR.instances['textarea_name'].destroy();
}
CKEDITOR.replace('textarea_name');
Questo non funziona per me, poiché ricevo invece un nuovo errore:
TypeError: Result of expression 'i.contentWindow' [null] is not an object.
Questo errore sembra verificarsi su "destroy ()" piuttosto che su "replace ()". Qualcuno l'ha sperimentato e ha trovato una soluzione diversa?
È possibile "ri-renderizzare" l'editor esistente, invece di distruggerlo e sostituirlo?
AGGIORNATO Ecco un'altra domanda relativa allo stesso problema, ma ha fornito un test case scaricabile .