Javascript “意外”;否则";和功能未运行
此代码似乎运行不正常:Javascript “意外”;否则";和功能未运行,javascript,google-chrome,javascript-events,Javascript,Google Chrome,Javascript Events,此代码似乎运行不正常: var addEventListener = (function () { "use strict"; if (document.addEventListener) { return function (element, event, handler) { element.addEventListener(event, handler, false); }; } else {
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返回:
还有其他意想不到的
有什么想法吗?您正在创建一个全局变量
addEventListener
,它将作为窗口的属性添加。因此,window.addEventListener
(元素
=窗口
,通过此调用)实际上是指您的自定义函数,而不是本机函数。使用不同的名称:
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
谢谢,补充了这一点,但我得到了另一个错误:uncaughttypeerror:objectonload没有“addEventListener”方法,它现在部分工作。它运行,但由于某些原因不能调用两次。我仍然得到JSlint错误:“return”之后出现意外的“else”。知道为什么吗?@SnippetSpace不能使用相同的useCapture
将同一函数作为事件侦听器添加到同一元素中两次。我不喜欢JSLint,所以我不知道为什么根据crockford的说法,else
不是“最佳实践”。else只是不需要。如果第一个“If”为真,则函数停止。如果没有,请继续并返回2e“返回”。您可以删除整个else{}:)请不要用破坏问题原始上下文的编辑覆盖您的问题。
myAddEventListener( window, "load", function(){})