Wie zu verfolgen JavaScript-events wie onclick onblur?
Gibt es eine Möglichkeit, debug-oder trace-jedes JavaScript-event im Internet Explorer 7?
Ich habe einen bug, der verhindert, dass das scrollen nach dem text-Auswahl, und ich habe keine Ahnung, welche Veranstaltung oder Aktion erzeugt den Fehler. Ich möchte wirklich, um zu sehen, welche Ereignisse werden ausgelöst, wenn ich die Maus bewegen, zum Beispiel.
Es ist zu viel Arbeit, rewire-die Quelle und ich habe irgendwie gehofft, es war so etwas wie ein sniffer, die zeigt mir alle Ereignisse, die ausgelöst werden.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Borkdude sagte:
Ich habe-hacking rund um event-handling mehrere Male, und meiner Meinung nach, obwohl die klassischen Debugger stepping sind nützlich, um zu verfolgen langer code, der ausgeführt wird, Sie sind nicht gut im tracking-Ereignisse. Stellen Sie sich anhören Maus bewegen von events und brechen in einer anderen Anwendung auf jeden Fall... Also in diesem Fall würde ich dringend raten Protokollierung.
Und es gibt auch Firebug Lite für den Internet Explorer. Ich hatte keine chance, es zu benutzen, aber es existiert. 🙂 Der Nachteil dabei ist, dass Sie nicht einen vollwertigen debugger, aber es hat ein Fenster.console-Objekt, das ist genau das, was Sie brauchen.
Schleife durch alle Elemente auf der Seite, die haben eine onXYZ definierte Funktion, und fügen Sie dann die Spur zu Ihnen:
Möchten Sie vielleicht versuchen, Visual Studio 2008 und der Funktion zum Debuggen von JavaScript-code.
Wenn das problem nicht spezifisch für Internet Explorer 7 sondern tritt auch im Firefox, dann eine weitere gute Möglichkeit zum Debuggen von JavaScript-code ist Firefox und die Firebug add-on, das ist ein JavaScript-debugger. Dann können Sie auch
console.log
Anweisungen im JavaScript-code, die können Sie dann sehen, die Ausgabe in die Konsole-Fenster in Firebug, anstatt Warnungen, die manchmal Durcheinander, bis die Ereignis-Kette.@[nickf] - ich bin mir ziemlich sicher, dass
document.all
ist eine Internet Explorer-spezifische Erweiterung.Müssen Sie fügen Sie einen Ereignis-handler, gibt es keinen Weg, um einfach nur beobachten die Ereignisse. Ein framework wie jQuery der Microsoft Ajax-Bibliothek leicht geben Ihnen Methoden zum hinzufügen von Ereignis-Handlern. jQuery ist schön, weil von dem Selektor Rahmen.
Dann benutze ich Firebug (Firefox-Erweiterung) und in einen Haltepunkt. Ich finde Firebug ist eine Menge leichter auf-und abzubauen als Visual Studio 2008.
Es ist basic, aber man könnte stick-Warnungen oder-Dokument.schreiben Sie Anrufe, wenn Sie etwas auslösen.
Die offensichtliche Möglichkeit wäre, um einige Warnungen für verschiedene Veranstaltungen, so etwas wie:
Sonst haben Sie eine weniger aufdringliche option zum einfügen Ihrer Warnungen in der dom-irgendwo.
Aber, ernsthaft über eine Bibliothek, wie jQuery zur Realisierung Ihrer Funktionalität. Viele der cross-browser-Probleme werden gelöst, Probleme und brauchen Sie nicht, lösen Sie wieder. Ich bin nicht sicher, dass genau die Funktionalität, die Sie versuchen, zu erreichen, aber es gibt wahrscheinlich viel scrollen und Auswahl der plugins für jQuery, die Sie nutzen könnten.
Ich bin nicht sicher über die genauen code (es ist eine Weile, seit ich geschrieben komplexen JavaScript-code), aber man kann Durchlaufen aller Steuerelemente auf das Formular und fügen Sie einen Ereignis -, dass sich die Ausgaben etwas, wenn das Ereignis ausgelöst wird.
Könnten Sie sogar mit anonymen Funktionen wickeln Sie die erforderlichen Informationen für die Identifizierung, welches Ereignis ausgelöst wurde.
Eine Sache ich mag zu tun ist, erstellen Sie eine bind-Funktion in JavaScript (wie, was Sie finden können in der Prototyp Bibliothek) speziell für Veranstaltungen, so dass es geht die "Ereignis" - Objekt an die Funktion gebunden. Nun, wenn Sie dies tun, können Sie einfach werfen Sie in einen trace Aufruf, der aufgerufen wird für jede Prozedur, die Sie verwendet. Und dann entfernen Sie, wenn es nicht benötigt wird. Einem Ort. Einfach.
Jedoch, unabhängig davon, wie man die trace-Anweisung aufgerufen zu werden, Sie wollen immer noch, um es zu sehen. Die beste Strategie ist es, einen separaten Bereich oder das Fenster übergabe der trace-Anrufe. Dojo Toolkit hat eine eingebaute Konsole, die läuft im Internet, Explorer, und es gibt andere ähnliche Dinge. Der klassische Weg, es zu tun ist, um ein neues Fenster erstellen und
document.write
zu.Matt Berseth ' hat etwas, das möglicherweise die Art von Sache, die Sie suchen, in Debugging ASP.NET AJAX-Anwendungen mit der Trace-Konsole AjaxControlToolkit Kontrolle.
Es basiert auf der Yahoo - YUI logger, YUI 2: Logger.
Mein Vorschlag ist, verwenden Sie FireFox zusammen mit FireBug und verwenden der built-in-Debug/Trace-Objekte. Sie sind ein Charme.