Skip to content

Instantly share code, notes, and snippets.

@0gust1
Last active December 18, 2015 21:59
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save 0gust1/5851640 to your computer and use it in GitHub Desktop.
Save 0gust1/5851640 to your computer and use it in GitHub Desktop.
JS function displaying all JS event binded to DOM elements corresponding to passed jQuery selector.

Why ?

I'm currently working on refactoring the javascript production code of a large ecommerce website. I needed a tool to quickly investigate events binded to DOM elements (especially when several scripts fragments are interacting on the same DOM structures).

How ?

Copy and paste this code in the javascript console of your browser (firefox and chrome tested). Call the function with the chosen selector in parameter and voilà ! In my case, I call it several times with production code stopped at several breakpoints.

function eventsShow(selecteur, eventType) {
var jElements = jQuery(selecteur);
console.groupCollapsed("Gestionnaires d'évènements pour les éléments correspondant à jQuery(\"%s\");",selecteur);
//on boucle sur les éléments
for (var j = 0; j < jElements.length; j++) {
var element = jElements.get(j);
var events = $._data(element, "events");
if (events) {
if (eventType) {
console.groupCollapsed("Evènements '" + eventType + "' sur :\n %o", element);
if (events[eventType]) {
console.log("Il y a " + events[eventType].length + " gestionnaires d'evenements '" + eventType + "' sur cet élément");
console.dir(events[eventType]);
} else {
console.log("pas d'évènement de type %s associé à cet élément", eventType);
}
} else {
console.groupCollapsed("Evènements sur :\n %o", element);
var eventCount = 0;
for (var key in events) {
if (events.hasOwnProperty(key)) {
eventCount = eventCount + events[key].length;
}
}
console.log("Il y a " + eventCount + " gestionnaires d'évenements sur cet élément");
for (var key in events) {
if (events.hasOwnProperty(key)) {
console.dir(events[key]);
}
}
}
} else {
console.info("Pas d'évènements sur cet élément");
}
console.groupEnd();
}
console.groupEnd();
}
var selecteur = "body";
//var eventType= "click";
//eventsShow("#overlay", "click");
eventsShow("input");
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment