29 votes

Existe-t-il des outils / techniques pour déboguer les gestionnaires d'événements de jQuery ?

J'essaie actuellement de déterminer quels gestionnaires d'événements de clics ont été attachés à ma division. Il ne devrait y avoir qu'un seul gestionnaire attaché, mais il semble y en avoir au moins un. J'utilise FireBug, mais Chrome pourrait également être une option. Je n'aime pas IE et je préfère ne pas l'utiliser.

Dans le meilleur des cas, je peux inspecter ma division à l'aide de FireBug et voir une liste de gestionnaires d'événements.

0 votes

J'aime cette question et une autre de plus de mon côté

0 votes

Quelqu'un vient de poster un bookmarklet qui vous permet de voir les eventhandlers attachés à une fonction. Je pense que c'est assez impressionnant. sprymedia.co.uk/article/Visual+Event

0 votes

Je pense que ces réponses sont toutes excellentes. Je choisirai ma préférée plus tard dans la journée, et je résumerai les réponses dans un montage ultérieur. Continuez à poster !

18voto

bpruitt-goddard Points 1129

Événement visuel est un joli signet javascript que vous pouvez exécuter sur une page pour voir tous les événements qui sont attachés à un contrôle.

1 votes

Il ne semble toujours pas révéler la fonction qui gère réellement l'événement, et montre seulement que Jquery est en quelque sorte à l'écoute.

10voto

Mark Coleman Points 24469

Si vous utilisez jQuery pour assigner vos gestionnaires d'événements, vous pouvez localiser les événements attachés via $("div").data("events");

$("div.test").each(function(){
    var events = $(this).data("events");
    //events.click will give you a list of click handlers, events.mouseenter, etc..
    $.each(events, function(i, eventType){
        $.each(eventType, function(){
          //this.handler() can be used to find the anonymous function assigned to the element.
          $("body").append("<h1>" + this.type + "</h1>");
        });
    });
});

Si vous souhaitez obtenir des manipulateurs en direct, vous pouvez faire la même chose pour le document.

var liveEvents = $(document).data("events").live;
$.each(liveEvents, function() {
    $("body").append("<h1>" + this.selector + this.origType +  "</h1>");
});

Exemple sur jsfiddle .

1 votes

Cela ne semble pas fonctionner avec jQuery 1.10. Après $(element).on("custom-event", function() { console.log("hi"); }) si j'inspecte $(element).data('events') Je reçois undefined mais $(element).trigger("custom-event") déclenche ce rappel.

8voto

Martin Jespersen Points 13702

Installez le plugin fireQuery pour firebug et vous verrez tous les événements liés à jQuery dans l'affichage de firebug, comme vous le souhaitez ;)

Vous pouvez le trouver ici : http://firequery.binaryage.com/ ou ici : https://addons.mozilla.org/en-us/firefox/addon/firequery/

Votre firebug ressemblera alors à ceci : enter image description here

3 votes

J'aimerais que cela existe pour Chrome

6voto

Ryan O'Neill Points 990

Vérifiez la fonction $.data.

Plus précisément, quelque chose comme ça :

var clicks = $(mySelector).data('events').click ;

Doit retourner une liste de gestionnaires d'événements de clics et leurs objets DOM associés.

-2voto

Manish Trivedi Points 1109

Le module complémentaire "fire-bug" (pour Mozilla) est la meilleure option pour cela.

0 votes

The best case scenario is that I can inspect my div using FireBug, and see a list of event handlers.

0 votes

J'ai installé firebug et je l'ai utilisé. Quelle est la prochaine étape ?

0 votes

J'ai cherché et je ne pense pas qu'il existe un moyen de visualiser les événements attachés en regardant simplement l'élément DOM dans firebug, comme MedicineMan veut le faire. Les points de rupture ne seraient utiles que lorsque les événements sont déclenchés. Il veut voir ce qui est attaché à tout moment.

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