javascript覆盖addEventListener并使其跨浏览器

时间:2012-05-03 10:41:24

标签: javascript override addeventlistener

进一步回答这个问题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);
        }
    })();

0 个答案:

没有答案