2010-08-15 8 views
48

Est-il possible d'écouter tous les événements javascript?Surveiller tous les événements JavaScript dans la console du navigateur

J'essaie de deviner si un événement est déclenché après que le DOM a été modifié par une requête AJAX.

+0

Regardez sous Mutation ici: http://en.wikipedia.org/wiki/DOM_events#Common.2FW3C_events sont-ils les événements que vous recherchez? –

+0

Je cherche un moyen d'intercepter l'événement onreadystatechange sur tous les XMLHttpRequest – knoopx

Répondre

93

Avec firebug ou web inspector vous pouvez utiliser monitorEvents:

monitorEvents(myDomElem); 

Ce imprime tous les événements émis par myDomElem à la console. Utilisez unmonitorEvents pour arrêter la surveillance des événements.

Si vous souhaitez obtenir des événements après la manipulation du DOM, jetez un oeil à Mutation Events.

Modifier:

Pour autant que je sache, il n'y a pas moyen facile d'intercepter tous les événements de tous onreadystatechange XMLHttpRequest. La seule solution que je puisse envisager est de remplacer l'objet XMLHttpRequest natif par votre propre implémentation. Par exemple:

(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; 
})(); 

Inutile de dire que c'est extrêmement hacky et généralement mal conseillé.

+2

oui, http://api.jquery.com/ajaxSuccess/ ne fait que crocheter le wrapper XHR de jQuery, donc aucun vrai événement JS n'est capturé. Cependant, ce hack devrait faire l'affaire :) – knoopx

+2

"généralement mal conseillé" - pourquoi? –

+1

Mise à jour: 'monitorEvents' fonctionne parfaitement aussi bien dans Chrome. –

Questions connexes