意外的“其他”和功能没有运行

时间:2012-08-07 12:24:09

标签: javascript google-chrome javascript-events

此代码似乎无法正常运行:

var addEventListener = (function () {
    "use strict";
    if (document.addEventListener) {
        return function (element, event, handler) {
            element.addEventListener(event, handler, false);
        };
    } else {
        return function (element, event, handler) {
            element.attachEvent('on' + event, handler);
        };
    }
})();

addEventListener(window, 'onload', calcFailback);

Chrome返回:

  

未捕获TypeError:对象onload没有方法'addEventListener'

Jslint回归:

  

意外的其他人。

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

您正在创建全局变量addEventListener,它将作为window的属性添加。所以window.addEventListenerelement === window,通过此调用)实际上是指您的自定义函数,而不是本机函数。使用不同的名称:

var myAddEventListener = (function() {
    "use strict";
    if (document.addEventListener) {
        return function(element, event, handler) {
            element.addEventListener(event, handler, false);
        };
    } else {
        return function(element, event, handler) {
            element.attachEvent('on' + event, handler);
        };
    }
})(); //<-- invoke it

还可以使用"load"

myAddEventListener( window, "load", function(){})
相关问题