进一步回答这个问题Failure to override Element's addEventListener in Firefox
我不想使用这里提到的外部包装器/实用程序功能。 Javascript add events cross-browser function implementation: use 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);
}
})();