如何在旧版本的IE中将addEventListener重新定义为attachEvent

时间:2014-09-04 09:57:15

标签: javascript

我有一个包含许多这样的行的插件:

document.addEventListener('keypress', function(e) {

this.drop.addEventListener('click', function(e) {

我想在顶部有一些javascript重新定义addEventListener,所以它实际上在旧浏览器中使用了attachEvent(我可以使用导航器对象)。我不想为上面的每一行代码做if语句。

2 个答案:

答案 0 :(得分:0)

var addEvent = function (ele, event, func) {
    if (ele.addEventListener) {
        ele.addEventListener(event, func, false);
    } else if (ele.attachEvent) {
        ele.attachEvent('on' + event, func);
    } else {
        ele['on' + event] = func;
    }
};

答案 1 :(得分:0)

我认为最好的方法是自己添加此活动。

这是我能想到的最简单的实现:

if (!Element.addEventListener)
Element.prototype.addEventListener = function(event,handler, placeholder) {
    this.attachEvent('on'+event,handler);
}

在页面开头运行此功能后,您应该可以在元素上使用addEventListener。我写了应该,因为你需要更多这样的函数才能在所有浏览器上使用相同的代码。您最好的选择是使用现有代码(如polyfill)来处理所有这些。