166 votes

En utilisant Chrome, comment trouver quels événements sont liés à un élément

Supposons que j'ai un lien sur ma page :

<a href="#" id="foo">Click Here</a>

Je ne sais rien d'autre, mais lorsque je clique sur le lien, une alert("bar") s'affiche. Je sais donc que, quelque part, un code est lié à #foo .

Comment puis-je trouver le code qui lie le alert("bar") à l'événement de clic ? Je suis à la recherche d'une solution avec Chrome.

Ps.. : L'exemple est fictif, donc je ne cherche pas de solution du genre : "Utilisez XXXXXX et recherchez dans tout le projet "alert(\"bar\")". Je veux une vraie solution de débogage/traçage.

152voto

Ionuț G. Stan Points 62482

Utilisation de Chrome 15.0.865.0 dev . Il y a une section "Event Listeners" dans le panneau Elements :

enter image description here

Et un "Event Listeners Breakpoints" sur le panneau scripts. Utilisez un point d'arrêt Souris -> clic et ensuite "step into next function call" tout en gardant un œil sur la pile d'appels pour voir quelle fonction userland gère l'événement. Idéalement, vous devriez remplacer la version miniaturisée de jQuery par une version non miniaturisée afin de ne pas avoir à entrer tout le temps, et utiliser enjamber lorsque cela est possible.

enter image description here

11 votes

Je me rapproche, mais la plupart des résultats pointent vers la ligne 16 de... jquery.min.js :( ( Je comprends pourquoi, pas besoin de l'expliquer, mais comment trouver qui a appelé la méthode bind() de jQuery ?

0 votes

Ces outils sont tous disponibles dans Chrome 12.0.742.100 également :) Merci !

13 votes

@Fluffy : Vous n'avez pas à le faire. Il suffit de cliquer sur le { } dans le coin inférieur gauche lors de l'affichage des js. Magique.

50voto

Matty J Points 1040

Vous pouvez également utiliser l'inspecteur de Chrome pour trouver les événements joints d'une autre manière, comme suit :

  1. Faites un clic droit sur l'élément à inspecter ou trouvez-le dans le volet "Éléments".
  2. Ensuite, dans l'onglet/volet "Écouteurs d'événements", développez l'événement (par exemple "clic").
  3. Développez les différents sous-nœuds pour trouver celui que vous voulez, puis cherchez où se trouve le sous-nœud "handler".
  4. Cliquez avec le bouton droit de la souris sur le mot "fonction", puis cliquez sur "Afficher la définition de la fonction".

Cela vous amènera à l'endroit où le gestionnaire a été défini, comme démontré dans l'image suivante, et expliqué par Paul Irish ici : https://groups.google.com/forum/#!topic/google-chrome-developer-tools/NTcIS15uigA

'Show Function definition'

1 votes

Vieux de deux ans, et toujours la meilleure réponse à cette question.

17voto

Javier Armendariz Points 299

Essayez l'extension jQuery Audit ( https://chrome.google.com/webstore/detail/jquery-audit/dhhnpbajdcgdmbbcoakfhmfgmemlncjg ), après l'installation, suivez ces étapes :

  1. Inspecter l'élément
  2. Sur le nouveau ' Audit jQuery L'onglet "Événements" développe la propriété "Événements
  3. Choisissez pour l'événement dont vous avez besoin
  4. Dans la propriété du gestionnaire, cliquez avec le bouton droit de la souris sur la fonction et sélectionnez ''. Afficher la définition de la fonction '
  5. Vous verrez maintenant le code de liaison d'événement
  6. Cliquez sur le bouton ' Joli imprimé pour une vue plus lisible du code.

15voto

Meliza Ramos Points 1409

(Dernière mise à jour en 2022) Pour la version Version Chrome Version 99 :

Chrome Developer Tools - Event Listener

  1. Sélectionnez l'élément que vous voulez inspecter

  2. Choisissez l'onglet Ecouteurs d'événements

  3. Assurez-vous de vérifier les écouteurs du cadre pour montrer le vrai fichier javascript au lieu de la fonction jquery.

7voto

Michael Jasper Points 4089

Modifier En lieu et place de ma propre réponse, celle-ci est tout à fait excellente : Comment déboguer les liaisons événementielles JavaScript/jQuery avec Firebug (ou un outil similaire) ?

Les outils de développement de Google Chromes ont une fonction de recherche intégrée dans la section scripts.

Si vous n'êtes pas familier avec cet outil : (juste au cas où)

  • clic droit n'importe où sur une page (dans chrome)
  • cliquez sur "Inspecter l'élément".
  • cliquez sur l'onglet 'scripts'.
  • Barre de recherche en haut à droite

Une recherche rapide sur le #ID devrait vous conduire à la fonction de liaison.

Ex : recherche de #foo vous emmènerait à

$('#foo').click(function(){ alert('bar'); })

enter image description here

4 votes

Bon début, mais que faire si j'ai 1500 références à #foo, la plupart d'entre elles ne liant rien, ou dans le cas où j'ai de multiples #foo ID dans des scripts externes qui ne sont pas déclenchés dans le cas présent ?

0 votes

Excellente question. D'après mon expérience, c'est là que commence généralement le processus de débogage humain :)

1 votes

Hehe, vous avez raison, mais ma question portait aussi sur ce que je dois faire en tant qu'humain :p

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X