此代码似乎无法正常运行:
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回归:
意外的其他人。
有什么想法吗?
答案 0 :(得分:2)
您正在创建全局变量addEventListener
,它将作为window
的属性添加。所以window.addEventListener
(element
=== 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(){})