Skip to content

Instantly share code, notes, and snippets.

@pospi
Last active November 22, 2015 02:17
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 pospi/5b0d219d833b91fa627c to your computer and use it in GitHub Desktop.
Save pospi/5b0d219d833b91fa627c to your computer and use it in GitHub Desktop.
Watch all DOM and jQuery events active on a page and log when they fire
window.watchEvents = function() {
var eventIds = [
'click', 'mousedown', 'mouseup',
'touch', 'touchstart', 'touchend',
'focus', 'focusin', 'focusout', 'blur',
'mouseover', 'mouseout', 'mousemove', 'mouseenter', 'mouseleave', 'mousewheel',
'keypress', 'keydown', 'keyup',
'change',
'scroll', 'resize',
'submit', 'reset',
'contextmenu', 'select',
'copy', 'cut', 'paste',
'dblclick',
'load', 'unload',
'hashchange',
];
function wrapLogging(handler, evtType)
{
return function(e) {
// debugger;
console.log('Fired ' + evtType + ' on:', e.target);
console.log('Target / delegate:', [e.currentTarget, e.delegateTarget]);
handler.apply(this, arguments);
};
}
console.log('---------------- BINDING EVENT WATCHERS ----------------');
(function () {
var elements = $('*');
elements.each(function() {
var elem = this;
// Watch regular DOM events
eventIds.forEach(function(evt) {
if (elem['on' + evt]) {
var handler = elem['on' + evt];
console.log('Found DOM ' + evt + ' event for', elem);
elem['on' + evt] = wrapLogging(handler, evt);
}
});
// Watch jQuery events
var data = $._data(this);
if (!data || !data.events) {
return;
}
for (var evtType in data.events) {
var evts = data.events[evtType];
evts.forEach(function (evt) {
var handler = evt.handler;
console.log('Found JQ ' + evtType + ' event for', elem);
evt.handler = wrapLogging(handler, evtType);
});
}
});
})();
console.log('---------------- EVENT WATCHERS INITED ----------------');
console.log('');
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment