意外的“else”和函数未运行

Unexpected "else" and function not running

本文关键字:函数 运行 else 意外      更新时间:2023-09-26

这段代码似乎没有正常运行:

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);

铬返回:

未捕获的类型错误:对象加载没有方法"addEventListener"

Jslint 返回:

出乎意料的。

有什么想法吗?

您正在创建一个全局变量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(){})