javascript - 意外的 "else"和功能未运行

标签 javascript google-chrome dom-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 返回:

Uncaught TypeError: Object onload has no method 'addEventListener'

Jslint 返回:

Unexpected else.

有什么想法吗?

最佳答案

您正在创建一个全局变量 addEventListener,它将作为 window 的属性添加。所以 window.addEventListener (element === window, with this call) 实际上指的是你的自定义函数,而不是原生函数。使用不同的名称:

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

也可以使用“加载”:

myAddEventListener( window, "load", function(){})

关于javascript - 意外的 "else"和功能未运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11845906/

相关文章:

javascript - 如果在 javascript .some() 函数中不满足条件,则返回值

javascript - 如何将使用 ImageService 提供的图像作为背景的 Canvas 元素转换为可下载图像?

google-chrome - 使用 webRequest 阻止和修改 AJAX 请求

javascript - 如何在不使用 jQuery 的情况下创建一个简单的页面垂直滚动条?

javascript - 窗口焦点和模糊事件在 Android 浏览器上无法正常工作

javascript - JavaScript 中的 hasOwnProperty

javascript - 我在 js 数组开头未定义

javascript - Greasemonkey 脚本是否可以在 Firefox 中自动执行 Ctrl+A(全选)操作?

javascript - 如何使用 jQuery 选择的插件重置表单?

javascript - 如何检查鼠标是否位于 Chrome 中的通知窗口上?