进一步回答这个问题Failure to override Element's addEventListener in Firefox
我不想使用这里提到的外部包装器/实用程序功能。Javascript添加事件跨浏览器功能实现:使用attachEvent/addEventListener vs inline events
目标:我只是调用重写的 addEventListener 函数来保持简单,它应该处理自身内部的跨浏览器差异或请告知。
我已经编辑了代码,我们如何在这个解决方案中实现跨浏览器功能
(function() {
var interfaces = [ HTMLDivElement, HTMLImageElement /* ... (add as many as needed) */ ];
for (var i = 0; i < interfaces.length; i++) {
(function(original) {
interfaces[i].prototype.addEventListener = function(type, listener, useCapture) {
// DO SOMETHING HERE
if(element.attachEvent){ //IE
arguments[0] = 'on' + arguments[0];
return element.attachEvent.apply(this, arguments);
} else { //other browsers
return original.apply(this, arguments);
}
}
})(interfaces[i].prototype.addEventListener);
}
})();