Frage

Gibt es eine Möglichkeit jeden JavaScript-Event in Internet Explorer 7 zu debuggen oder zu verfolgen?

Ich habe einen Fehler, der nach dem Text-Auswahl verhindert Scrollen, und ich habe keine Ahnung, welches Ereignis oder eine Aktion die Fehler erzeugt. Ich möchte wirklich sehen, welche Ereignisse ausgelöst werden, wenn ich die Maus zum Beispiel bewegen.

Es ist zu viel Arbeit, um die Quelle zu verkabeln und ich hoffte Art von dort so etwas wie ein Schnüffler war, die alle zeigt mir die Ereignisse, die ausgelöst werden.

War es hilfreich?

Lösung

Borkdude sagte:

  

Sie mögen vielleicht Visual Studio 2008 und seine Funktion zum Debuggen von JavaScript-Code, um zu versuchen.

Ich habe um Ereignis am Computer gehackt mehrmals Handhabung und meiner Meinung nach, obwohl klassischer Schritt Debugger nützlich ist, langer Code zu verfolgen läuft, sind sie bei der Verfolgung Ereignissen nicht gut. Stellen Sie sich vor hören Mausbewegungsereignisse und bricht in einer anderen Anwendung auf jedem Fall ... Also in diesem Fall, würde ich dringend raten Protokollierung.

  

Wenn das Problem Internet Explorer 7 nicht spezifisch ist, sondern tritt auch in Firefox, dann eine weitere gute Möglichkeit, JavaScript-Code zu debuggen, ist Firefox und die Firebug Add-on davon einen JavaScript-Debugger.

Und es gibt auch Firebug Lite für den Internet Explorer. Ich habe keine Chance, es zu benutzen, aber es existiert. :-) Der Nachteil davon ist, dass es nicht zu einem vollwertigen Debugger, aber es hat ein window.console Objekt hat, das ist genau das, was Sie brauchen.

Andere Tipps

Schleife durch alle Elemente auf der Seite, die eine onXYZ Funktion definiert haben und fügen Sie dann die Spur zu ihnen:

var allElements = document.all; // Is this right? Anyway, you get the idea.

for (var i in allElements) {
    if (typeof allElements[i].onblur == "function") {
        var oldFunc = allElements[i].onblur;
        allElements[i].onblur = function() {
             alert("onblur called");
             oldFunc();
        };
    }
}

Sie mögen vielleicht Visual Studio 2008 und seine Funktion zum Debuggen von JavaScript-Code, um zu versuchen.

Wenn das Problem Internet Explorer 7 nicht spezifisch ist, sondern tritt auch in Firefox, dann eine weitere gute Möglichkeit, JavaScript-Code zu debuggen, ist Firefox und die Firebug Add-on dem einen JavaScript-Debugger hat. Dann können Sie auch console.log Anweisungen in dem JavaScript-Code zu setzen, die Sie dann die Ausgabe in dem Konsolenfenster in Firebug sehen können, anstatt Warnungen zu verwenden, die manchmal vermasselt die Ereigniskette.

@ [Nickf] - Ich bin mir ziemlich sicher, dass document.all ist ein Internet Explorer spezifische Erweiterung

.

Sie müssen einen Event-Handler befestigen, gibt es keine Möglichkeit, nur ‚Uhr‘ die Ereignisse. Ein Framework wie jQuery der Microsoft Ajax-Bibliothek wird Ihnen Methoden leicht die Ereignishandler hinzuzufügen. jQuery ist schön wegen seiner Wähler Rahmen.

Dann benutze ich Firebug (Firefox-Erweiterung) und in einem Haltepunkt setzen. Ich finde Firebug ist viel einfacher einzurichten und abzureißen als Visual Studio 2008.

Es ist einfach, aber man konnte Warnungen oder document.write Anrufe in kleben, wenn Sie etwas auslösen.

Der offensichtliche Weg wäre, einige Warnungen für verschiedene Veranstaltungen zur Einrichtung so etwas wie:

element.onclick = function () { alert('Click event'); }

Ansonsten haben Sie eine weniger aufdringliche Möglichkeit, Ihre Warnungen in den dom irgendwo eingefügt wird.

Aber, ernsthaft in Erwägung ziehen eine Bibliothek wie jQuery Ihre Funktionalität zu implementieren. Viele der Cross-Browser-Probleme werden gelöst Probleme und Sie müssen nicht, sie wieder zu lösen. Ich bin nicht sicher, genau die Funktionalität versuchen Sie zu erreichen, aber es gibt wahrscheinlich viele Scrollen und Auswählen von Plugins für jQuery Sie nutzen könnten.

Ich bin auf der genauen Code nicht sicher (es eine Weile gewesen, da ich komplexe JavaScript-Code geschrieben hat), aber man konnte durch alle Steuerelemente auf dem Formular aufzählen und ein Ereignis anhängen, die etwas ausgibt, wenn das Ereignis ausgelöst wird.

Sie könnten sogar anonyme Funktionen verwenden, um die notwendigen Informationen zur Identifizierung, welches Ereignis wickeln wurde ausgelöst wird.

Eine Sache, die ich tun möchte, ist eine bind Funktion in JavaScript erstellen (wie das, was Sie in der Prototype Bibliothek), die speziell für Veranstaltungen, so dass es das „Ereignis“ Objekt verläuft entlang an die gebundenen Funktion. Nun, wenn Sie dies tun, könnten Sie einfach in einer Spur Anruf werfen, die für jeden Handler aufgerufen werden, die es verwendet. Und dann ist es zu entfernen, wenn es nicht gebraucht wird. Ein Platz. Leicht.

Doch unabhängig davon, wie Sie die Anweisung trace erhalten aufgerufen werden, wollen Sie immer noch sehen. Die beste Strategie ist es, einen separaten Bereich oder ein Fenster haben, um die Spur Anrufe übergeben. Dojo Toolkit eine integrierte Konsole, die in Internet Explorer läuft hat, und es gibt andere ähnliche Dinge dort draußen. Der klassische Weg, es zu tun ist, ein neues Fenster und document.write, um es zu schaffen.

  • Ich empfehle ein Datum Zeit jede Spur zu befestigen. Hat mir geholfen, deutlich in der Vergangenheit.
  • Debuggen und Warnungen in der Regel wird nicht helfen, weil es den normalen Ereignisablauf unterbricht.

Matt Berseth hat etwas, das die Art der Sache sein kann, Sie suchen in Debuggen ASP.NET AJAX-Anwendungen mit der Trace-Konsole AjaxControlToolkit Steuerung .

Es basiert auf dem Yahoo YUI Logger, YUI. 2: Logger

Mein Vorschlag ist, verwenden Sie FireFox zusammen mit Firebug und verwenden Sie die eingebaute in Debug / Trace-Objekte. Sie sind ein Charme.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top