Skip to content

Instantly share code, notes, and snippets.

@Ginden
Last active November 2, 2021 20:32
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save Ginden/5da319b57296c31874ea to your computer and use it in GitHub Desktop.
Save Ginden/5da319b57296c31874ea to your computer and use it in GitHub Desktop.
window._eventLog = (function(longTime, important) {
var eventLog = [];
eventLog.getLongEvents = function(time) {
time = time === undefined ? longTime : time;
return this.filter(function(el) {
return el.time > time;
})
}
// Should we filter mousemove?
Object.getOwnPropertyNames(window).filter(str => str.startsWith('on')).map(str => str.replace('on', '')).forEach(function(eventName) {
var timeMeasured = new WeakMap();
window.addEventListener(eventName, function(e) {
timeMeasured.set(e, window.performance.now());
}, true);
window.addEventListener(eventName, function(event) {
var time = (window.performance.now() - timeMeasured.get(event));
var elementString = event.target &&
event.target.nodeName
&&
event.target.nodeName +
(event.target.id ? '#' + event.target.id : '' ) +
(event.target.getAttribute && event.target.getAttribute('class') ?
'.' + event.target.getAttribute('class').split(' ').map(str => str.trim()).filter(Boolean).join('.')
: '' );
var ret = {
name: eventName,
time: time,
element: elementString,
eventData: null
};
if (time > longTime || (important && important(ret, event)))
ret.eventData = event;
timeMeasured.delete(event);
eventLog.push(ret);
}, false);
});
return eventLog;
}(16));
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment