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 alerte ("barre") s'affiche. Je sais donc que quelque part, du code est lié à #foo.
Comment trouver le code qui lie l'alerte ("barre") à l'événement click? Je cherche une solution avec Chrome.
Ps.: L’exemple est fictif, je ne cherche donc pas une solution du type: "Utilisez XXXXXX et recherchez dans le projet entier" alert (\ "bar \") ". Je souhaite une véritable solution de débogage/traçage.
Utilisation de Chrome 15.0.865.0 dev. Il existe une section "Auditeurs d'événement" dans le panneau Eléments:
Et un "Points d'arrêt d'auditeurs d'événement" dans le panneau Scripts. Utilisez une souris -> cliquez sur le point d'arrêt, puis "passez à l'appel de la fonction suivante" tout en surveillant la pile d'appels pour voir quelle fonction utilisateur gère l'événement. Dans l’idéal, vous devriez remplacer la version simplifiée de jQuery par une version non modifiée de sorte que vous n’ayez pas à entrer tout le temps et à utiliser passez au-dessus de lorsque cela est possible.
Vous pouvez également utiliser l'inspecteur de Chrome pour rechercher les événements attachés d'une autre manière, comme suit:
Cela vous mènera à l'emplacement où le gestionnaire a été défini, comme illustré dans l'image suivante, et expliqué par Paul Irish ici: https://groups.google.com/forum/#!topic/google-chrome-developer -tools/NTcIS15uigA
Essayez l’extension jQuery Audit ( https://chrome.google.com/webstore/detail/jquery-audit/dhhnpbajdcgdmbbcoakfhmfgmemlncjg ), après l’installation, procédez comme suit:
Edit: à la place de ma propre réponse, celle-ci est tout à fait excellente: Comment déboguer des liaisons d'événements JavaScript/jQuery avec Firebug (ou un outil similaire)
Les outils de développement de Google Chromes comportent une fonction de recherche intégrée à la section des scripts.
Si vous n'êtes pas familier avec cet outil: (juste au cas où)
Faire une recherche rapide pour le #ID devrait vous mener éventuellement à la fonction de liaison.
Ex: recherche de #foo
vous amènerait à
$('#foo').click(function(){ alert('bar'); })
Mise à jour 2018 - Peut être utile aux futurs lecteurs:
Je ne sais pas quand cela a été introduit dans Chrome. Mais une autre manière (facile) de le faire est maintenant Chrome est via les commandes de la console.
Par exemple: ( in chrome type de console)
getEventListeners($0)
Attendu que $ 0 est l'élément sélectionné dans le DOM.
https://developers.google.com/web/tools/chrome-devtools/console/command-line-reference#0_-_4
findEventHandlers est un plugin jquery, le code brut est ici: https://raw.githubusercontent.com/ruidfigueiredo/findHandlersJS/master/findEventHandlers.js
Étapes
Collez le code brut directement dans la console de chrome (note: jquery doit déjà être chargé)
Utilisez l'appel de fonction suivant: findEventHandlers(eventType, selector);
pour rechercher le gestionnaire eventType de l'élément spécifié dans le sélecteur correspondant.
Exemple :
findEventHandlers("click", "#clickThis");
Ensuite, s’il en existe un, le gestionnaire d’événements disponible apparaîtra ci-dessous, vous devez développer pour trouver le gestionnaire, cliquer avec le bouton droit de la souris sur la fonction et sélectionner show function definition
Voir: https://blinkingcaret.wordpress.com/2014/01/17/quickly-finding-and-debugging-jquery-event-handlers/
Pour Chrome Version 52.0.2743.116:
Dans les outils de développement de Chrome, ouvrez le panneau "Rechercher" en appuyant sur Ctrl
+ Shift
+ F
.
Tapez le nom de l'élément que vous essayez de trouver.
Les résultats des éléments liés doivent apparaître dans le panneau et indiquer le fichier dans lequel ils se trouvent.