2010-08-09 3 views
3

en double possible:
Inspect attached event handlers for any DOM elementAffichage des événements d'éléments DOM et leurs gestionnaires

est-il un outil - comme une extension de navigateur, le script de la console jQuery, bookmarklet ou plug-in Firebug - qui affiche tous les événements qui peuvent être déclenchés par un élément DOM particulier, et incluent tous les gestionnaires d'événements écoutant actuellement ces événements?

+0

Bon appel KennyTM - ne pas apercevoir que, si possible, je voudrais essayer de garder cette ouverture pour voir s'il y a eu des faits nouveaux survenus depuis a posé cette question. –

+0

@ChrisFulstow Tous les nouveaux développements peuvent aller dans l'autre thread parfaitement bien. –

Répondre

3

Vous recherchez:

FireQuery

http://firequery.binaryage.com/

Pour ce faire vous-même, vous pouvez toujours accéder à la structure events data d'un jQuery object.

Exemple:

$(document.body).bind('click', function(){ 
    alert('I am an event handler!'); 
}); 

$.each($(document.body).data('events'), function(i,v){ 
    console.log(i); 
    $.each(v, function(i2,v2){ 
    console.log(' > ', v2.handler.toString()); 
    }); 
}); 

qui dresserait une liste tous les événements dans votre console Firebug/Webkit et l'imprimer est des fonctions de gestionnaire d'événement sous forme de texte. Vous pouvez supprimer la pièce .toString() ou simplement enregistrer v2 pour obtenir des informations plus détaillées.

mise à jour

Comme Anurag a commenté, qui vous montrera que les gestionnaires qui ont été liés par jQuery. Il ne recherchera pas addEventhandler()/addHandler ou les gestionnaires d'événements en ligne.

Vous pouvez rechercher des gestionnaires en ligne à l'événement en vérifiant l'attribut on-xxx. DOM level3 met en œuvre hasEventListenerNS, mais je ne pense pas qu'aucun navigateur les utilise pour le moment.

+3

Vous devriez ajouter que cela ne fera que lister les événements enregistrés via jQuery. – Anurag

1

de Chrome barre de développeur intégré montre des gestionnaires d'événements liés à un élément DOM particulier, mais il ne mentionne pas les événements qui n'ont pas déjà des gestionnaires qui leur sont liés.

+0

+1 - Aussi, que voulez-vous dire par - "mais il ne liste pas les événements qui n'ont pas de gestionnaires déjà liés à eux"? Si un événement, disons «keydown», n'a pas de gestionnaire, alors il ne sera pas listé, ce qui est plutôt évident dans tous les cas. – Anurag

+0

@ Anurag- J'ai eu la même pensée, mais le PO a demandé qu'il "affiche tous les événements qui peuvent être déclenchés", ce que je supposais être à des fins de référence –

Questions connexes