Używam okien dialogowych jQuery do prezentowania formularzy (pobieranych przez AJAX). W niektórych formularzach używam CKEditor dla obszarów tekstowych. Edytor wyświetla się dobrze przy pierwszym załadowaniu.
Kiedy użytkownik anuluje okno dialogowe, usuwam zawartość, aby została załadowana na nowo na późniejsze żądanie. Problem polega na tym, że po ponownym załadowaniu okna dialogowego CKEditor twierdzi, że edytor już istnieje.
uncaught exception: [CKEDITOR.editor] The instance "textarea_name" already exists.
API zawiera metodę niszczenia istniejących edytorów i widziałem ludzi twierdzących, że jest to rozwiązanie:
if (CKEDITOR.instances['textarea_name']) {
CKEDITOR.instances['textarea_name'].destroy();
}
CKEDITOR.replace('textarea_name');
U mnie to nie działa, ponieważ zamiast tego pojawia się nowy błąd:
TypeError: Result of expression 'i.contentWindow' [null] is not an object.
Wydaje się, że ten błąd występuje raczej w funkcji „niszcz ()” niż w funkcji „replace ()”. Czy ktoś tego doświadczył i znalazł inne rozwiązanie?
Czy można „ponownie wyrenderować” istniejący edytor zamiast go niszczyć i zastępować?
AKTUALIZACJA Oto kolejne pytanie dotyczące tego samego problemu, ale dostarczył on przypadek testowy do pobrania .