2017-04-14 3 views
0

Ich arbeite an einer großen Anwendung, die keine Dokumentation oder Kommentare hat. Es gibt einen Unterschied im Verhalten zwischen IE und Firefox und Chrome. Um es zu debuggen, muss ich einen Ort finden, an dem eine Eigenschaft geändert wird (tinymce.editors.length, ich muss herausfinden, wo ein tinymce-Editor erstellt wird, weil er im IE erstellt wird, aber nicht in Firefox oder Chrome) . Bis jetzt scheint die einzige Option zu sein, blind Punkte um alle Skripte zu setzen, aber es gibt Zehntausende von Zeilen, so dass alle anderen Ideen geschätzt werden.Wie zu finden, wenn sich ein Objektwert in IE ändert

+0

Verwenden Sie Ctrl-f (finden) auf den Quellcode und hoffe, dass die Zeichenfolge 'tinymce.editors.length' dort erscheint. Oder ist es minimierter Code? Sie können auch das gesamte Programm von Anfang an durchgehen, denke ich. – Shilly

+0

@Silly die Variable erscheint nicht im Code, es wird nicht durch das Skript selbst geändert, es ist ein Aufruf an eine externe Bibliothek (Google Tinymce), und es enthält Informationen darüber, wie viele Editoren erstellt wurden, das Problem ist, kann ich nicht Finden Sie, wo sie erstellt werden, auch nachdem Sie Haltepunkte um alle Aufrufe der init-Funktionen gesetzt haben. – Xyzk

+0

Haben Sie den Link zu tinymce? Da dieser Pfad irgendwo als String erscheinen sollte, entweder im Code selbst oder in einer Konfigurationsdatei. Oder eine andere Saite, mit der du Tinymce identifizieren kannst? Andernfalls bleiben Sie beim Überwachen der Netzwerkregisterkarte und der Überwachung des Objekts im Debugger. – Shilly

Antwort

2

Wenn Sie das Skript für TinyMCE laden, wird im Browser ein globales Objekt namens tinymce erstellt. Der bloße Akt des Ladens des Skripts erstellt dieses Objekt.

Innerhalb des tinymce Objekts befindet sich ein Array mit der Bezeichnung editors. Der TinyMCE-Editor verwendet dieses Array, um alle Editor-Instanzen auf der Webseite zu verfolgen. Jedes Mal, wenn Sie eine Instanz von TinyMCE initialisieren, wird sie zum Array hinzugefügt und jedes Mal, wenn Sie eine Instanz von TinyMCE entfernen, wird sie aus dem Array entfernt. Sie sollten das tinymce.editors Array niemals selbst manipulieren müssen.

Die am häufigsten verwendete Methode zum Initialisieren einer TinyMCE-Instanz ist die init()-Funktion.

https://www.tinymce.com/docs/get-started/first-steps/#step2initializetinymceaspartofawebform

... und die API selbst ist dokumentiert hier: Ein sehr einfaches Beispiel dafür ist hier zu finden suchen, den Quellcode der Anwendung

https://www.tinymce.com/docs/api/tinymce/root_tinymce/#init

Ich würde überprüfen Zur Verwendung der Methode init(), um festzustellen, wo in Ihrem Code der Editor instanziiert wird.

+0

Ich habe einen Haltepunkt bei jedem Init eingerichtet, die editors.length scheint sich auch nach dem Beenden nicht zu ändern (wenn man sie von Variable Watch sieht). Wenn ich jedoch "tinymvc.editors.length" eintippe, In der IE-Konsole, nachdem das Dokument vollständig geladen wurde, gibt es eindeutig an, dass es 4 gibt. Wissen Sie, ob Editoren unmittelbar nach der Initialisierung hinzugefügt werden, oder werden sie an einem anderen Punkt in der Zukunft hinzugefügt? – Xyzk

+0

Die Aufrufe von 'init()' sind asynchron. Wenn Sie die Länge sofort nach Aufruf von 'init()' überprüfen, wäre ich nicht überrascht, wenn es noch nicht im Array registriert ist. –

Verwandte Themen