我正在开发一个 Web 应用程序,我需要捕获所有元素的所有事件,我自己编写了一个代码,但我需要你们可爱的专家来尽可能地提高我的代码性能。
// Create mouse event callbacks and an array to store callbacks,
// This array is to prevent creation of callback functions multiple times
var mouseEventCallbacks = {};
var mouseEvents = [
'mouseover',
'mouseout',
'mousedown',
'mouseup',
'click',
'mousemove',
'contextmenu',
'dblclick',
'mousewheel'
];
function mouseEventCallback(eventType){
if(!mouseEventCallbacks[eventType])
mouseEventCallbacks[eventType] = function(event) {
self.port.emit('new-event', {
x: event.pageX + window.pageXOffset,
y: event.pageY + window.pageYOffset
},{
type: eventType
});
}
return mouseEventCallbacks[eventType];
}
// Attach all events to all elements
var elems = window.document.querySelectorAll('*');
for(var j = 0, s = elems.length; j < s; j++) {
attachMouseEvents(elems[j]);
}
function attachMouseEvents(element){
for(var k = 0, s = mouseEvents.length; k < s; k++){
element.addEventListener(mouseEvents[k],
mouseEventCallback(mouseEvents[k]),
false);
}
}