CKEditor Uncaught TypeError: Die Methode 'unselectable' von null kann nicht in der EmberJS Single Page App mit mehreren Editoren aufgerufen werden

7

Ich habe eine einzelne Seite App erstellt mit EmberJS.

Ich habe 3 Textareas auf der Seite.

Ich rendere den ckeditor, sobald das Textfeld in das dom eingefügt wurde, und ich markiere eine Eigenschaft auf der Controller-Aufzeichnung, dass der ckeditor gerendert wurde, sodass ich es nicht mehr als einmal rende.

Ich schaue sogar in das dom, um zu verifizieren, dass es dort derzeit keinen Editor gibt.

Beim Aktualisieren der Seite bekomme ich diesen Fehler zufällig:

%Vor%

Ich weiß nicht, was es verursacht oder jetzt, um es zu verhindern. Wenn es diesen Fehler nicht wirft, erscheinen alle 3 Wörter gut.

Hier ist mein Code für den Editor:

%Vor%

Ich verwende auch das "onChange" -Plugin für ckeditor, um ein "onChange" -Ereignis auszulösen, wenn sich etwas im Editor ändert und darauf reagiert.

Was ich versucht habe:

  • Entfernen des onChange-Plugins
  • chkeditor in die 4.3 beta Version ändern
  • Entfernen der Symbolleistenanpassungen
  • Entfernen des OnChange-Ereignis-Listeners
  • verifiziere, dass alle textareas Inhalte enthalten, wenn render

Was muss ich tun, um das Problem zu beheben?

BEARBEITEN

Hier ist die Stack-Trace: (Ich bin in der App auf der Ver Saite)

%Vor%

BEARBEITEN # 2:

Hier ist eine Geige des spezifischen Bereichs der Anwendung, in der das Problem auftritt: Ссылка

    
Chuck 11.10.2013, 23:05
quelle

4 Antworten

19

Ich hatte ein ähnliches Problem mit AngularJS und jQuery UI Sortable mit mehreren CKEditors auf der Seite. Im Grunde ein Albtraum-Setup. Ich bin mir nicht sicher, ob das überhaupt zusammenhängt, aber ich dachte, ich würde es teilen, falls jemand anderes auf dieses Problem stoßen sollte. Es scheint ein Fehler in CKEditor ( Ссылка ?) Mehr als alles andere.

Immer wenn das DOM durch sortierbar geändert wird, habe ich Callbacks, die die CKEs (Long Story) zerstören / neu erstellen.

Ich habe CKEDITOR.remove(ckInstance) aufgerufen, was zu demselben Fehler geführt hat, den Sie erhalten haben.

Ich habe auch versucht Calling% Co_de% und% Co_de% (um zu vermeiden, die DOM, die bereits geändert hatte zu aktualisieren) in meinem Callback, aber den Fehler ckInstance.destroy() (und auch ckInstance.destroy(true) irgendwo entlang der Linie) / p>

Ich konnte dieses Problem folgendermaßen beheben:

Cannot read property 'hasAttribute' of undefined

CKEditor scheint einen schrecklichen Job zu machen und kümmert sich um DOM-Änderungen unglaublich schlecht (ganz zu schweigen von Angular ...)

Hoffentlich rettet das jemand anderem die lächerliche Zeit, die ich brauchte, um es herauszufinden:)

    
mwalsher 22.08.2014 21:18
quelle
8

Ich hatte das gleiche Problem mit Meteor und auch mehrere ckeditor-Instanzen. Dies ist ein häufiges Problem beim Laden von reaktiven DOMs im Allgemeinen, bei dem Ihre App Ihre javaScript-Aufrufe in der Reihenfolge verarbeitet hat, in der sie empfangen wurden, das DOM jedoch möglicherweise nicht vollständig geladen wurde.

Um das zu lösen, blockiere ich den Code einfach mit einem setTimeout .

%Vor%     
thatgibbyguy 05.06.2015 14:23
quelle
1

Ich habe gerade die minimierte Datei bearbeitet (Notizen in einer Textdatei für Entwickler hinterlassen) und einfach geändert, wo mein Fehler aufgetreten ist, um nach Null zu suchen von

%Vor%

bis

%Vor%

Ich habe das an zwei Stellen gemacht.

    
Valamas 17.07.2015 01:58
quelle
0

Versuchen Sie, ck_editor.destroy aufzurufen, wobei ck_editor Ihre Editor-Instanz ist. Aus irgendeinem Grund scheint CKEDITOR an alten Instanzen festzuhalten. Wenn Sie sie zerstören, scheint der Fehler zu verschwinden.

%Vor%     
wmarbut 14.01.2014 20:53
quelle