2010-08-15 6 views
48

Ist es möglich, alle Javascript-Ereignisse zu hören?Überwachen Sie alle JavaScript-Ereignisse in der Browser-Konsole

Ich versuche zu erraten, wenn ein Ereignis ausgelöst wird, nachdem das DOM von einer AJAX-Anfrage geändert wurde.

+0

Schau unter Mutation hier: http://en.wikipedia.org/wiki/DOM_events#Common.2FW3C_events sind dies die Ereignisse, die Sie suchen? –

+0

Ich bin auf der Suche nach einer Möglichkeit, onreadystatechange Ereignis auf alle XMLHttpRequest abzufangen – knoopx

Antwort

93

Mit firebug oder web inspector können Sie monitorEvents verwenden:

monitorEvents(myDomElem); 

Dies druckt alle von myDomElem an die Konsole emittiert Ereignisse. Verwenden Sie unmonitorEvents, um die Überwachung von Ereignissen zu stoppen.

Wenn Sie daran interessiert sind, Ereignisse zu erhalten, nachdem das DOM manipuliert wurde, werfen Sie einen Blick auf Mutation Events.

bearbeiten:

Soweit ich weiß, gibt es keine einfache Möglichkeit, alle onreadystatechange Ereignisse von allen XMLHttpRequest abzufangen. Die einzige Problemumgehung, die ich mir vorstellen kann, besteht darin, das native XMLHttpRequest-Objekt mit Ihrer eigenen Implementierung zu überschreiben. Zum Beispiel:

(function() { // Overriding XMLHttpRequest 
    var oldXHR = window.XMLHttpRequest; 

    function newXHR() { 
     var realXHR = new oldXHR(); 

     realXHR.addEventListener("readystatechange", function() { 
      console.log("an ajax request was made") 
     }, false); 

     return realXHR; 
    } 

    window.XMLHttpRequest = newXHR; 
})(); 

Unnötig zu sagen, das ist extrem hacky und in der Regel schlecht beraten.

+2

Ja, http://api.jquery.com/ajaxSuccess/ hakt nur jQuery XHR-Wrapper, so dass kein echtes JS-Ereignis erfasst wird. Allerdings sollte dieser Hack den Trick machen :) – knoopx

+2

"allgemein schlecht beraten" - warum? –

+1

Update: 'monitorEvents' funktioniert in Chrome genauso gut. –

Verwandte Themen