我遇到了一个奇怪的问题,当从if / else块中调用window.addEventListener(或window.attachEvent)时似乎没有触发。例如,假设我有以下html和javascript文件:
的test.html
<!DOCTYPE html>
<html>
<head>
<META HTTP-EQUIV="cache-control" CONTENT="no-store">
<script type="text/javascript" src="test.js"></script>
<script type="text/javascript">
var tst = new Tester();
if (window.addEventListener) {
window.addEventListener("load", tst.onloadFunc, false);
console.log("addEventListener in conditional");
} else if (window.attachEvent) {
window.attachEvent(window.attachEvent("onload", tst.onloadFunc));
console.log("addEvent in conditional");
}
//window.addEventListener("load", tst.onLoadFunc, false);
</script>
</head>
<body>
</body>
</html>
test.js
function Tester() {
this.onLoadFunc = function() {
console.log("in Tester");
}
}
如果我访问test.html并启动javascript检查器,我会看到“条件中的addEventListener”已记录。但是,我不看到“在Tester中”记录了。
现在,如果我取消注释if / else之外的addEventListener行,我会看到“在Tester中”记录。
有人可以解释为什么会这样吗?有什么方法可以解决它或者更好的方法来完成同样的事情吗?
答案 0 :(得分:2)
条件onLoadFunc
电话中window.addEventListener
的大小写错误。
答案 1 :(得分:2)
Javascript区分大小写。
您应该将tst.onLoadFunc而不是tst.onloadFunc作为addEventListener的参数传递。