2012-06-07 1 views
13

Je ne peux toujours pas croire que ce n'est pas possible mais existe-t-il un moyen de parcourir le dom et voir tous les gestionnaires d'événements attachés en utilisant 'addEventListener'. This post et beaucoup d'autres dit non.Comment trouver des écouteurs d'événement sur un noeud DOM en utilisant JavaScript

Si tel est le cas, alors comment les applications comme l'inspecteur de Chrome ou Firebug les montrent, ce qu'ils font? Je suppose qu'ils augmentent probablement les méthodes du dom d'une manière ou d'une autre afin qu'ils puissent suivre ce qui est lié.

+0

Où voyez-vous les écouteurs d'événements d'affichage Chrome ou Firebug? –

+0

Oui, j'aimerais savoir où vous les voyez aussi! J'ai téléchargé des plugins pour Firebug qui les montrent, mais vous avez probablement raison de suivre les écouteurs d'événements quand ils sont liés – Ian

+1

Dans Chrome Web Inspector, cliquez sur l'onglet 'éléments' en haut. c'est le plus loin à gauche. Sélectionnez un élément dans le dom puis sur le côté droit il y a une liste d'informations sur l'élément que vous avez sélectionné comme Styles, Propriétés, etc. Le dernier dans la liste est Auditeurs d'événements et il vous donne toutes les informations dont vous avez besoin. Mais vous ne pouvez voir que les informations pour chaque élément sélectionné, pas le DOM entier. Hense-moi poser la question :) – screenm0nkey

Répondre

25

Console de Chrome a une méthode qui peut vous aider à vérifier si un nœud dom a des écouteurs d'événements enregistrés, par exemple pour vérifier écouteurs d'événement à l'utilisation du nœud de document:

https://developers.google.com/chrome-developer-tools/docs/commandline-api#geteventlistenersobject

getEventListeners(document); 

Vous pouvez récursive itérer sur tous les nœuds dom et trouver tous les gestionnaires d'événement qui si besoin.

+2

getEventListeners (myDomElement) fonctionne dans la console des outils de développement Chromium v.25, mais dans le code actuel, il génère une erreur. –

+0

@Robinlikethebird oui, 'getEventListeners' est une méthode que fournit la console devtools de chrome, je cherche une méthode qui peut trouver des événements liés à dom au moment de l'exécution. pour l'instant, je trouve juste la méthode jquery '$ .data (element, 'events')'. Je suis à la recherche d'un javascript simple ou DOM. – novaline

0

Sur console Chrome V53 J'ai essayé:

getEventListeners (document);

qui retourne:

__proto__: Object

éléments

et sous, pas ce que je suis à la recherche.

J'ai essayé:

getEventListeners (fenêtre);

qui retourne

Object {beforeunload: Array [1], charge: Array [1]}

C'est ce que je cherche. Je pense donc que l'approche correcte est le Robin comme le chemin d'oiseau:

getEventListeners (myDomElement):

myDomElement est le ciblé objet a obtenu des moyens standard comme getElementById etc ..

0

utilisez la fonction suivante pour récupérer le json des événements enregistrés;

getEventListeners (nom_noeud); où nom_noeud peut être un nom d'élément ou son identifiant.

Questions connexes