繁体   English   中英

有条件的window.addEventListener

[英]window.addEventListener in a conditional

我遇到一个奇怪的问题,当从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中”的记录。

有人可以解释为什么会这样吗? 有没有解决的办法,或者有更好的方法完成同一件事?

在有条件的window.addEventListener调用中, onLoadFunc大写错误。

Javascript区分大小写。

您应该传递tst.onLoadFunc而不是tst.onloadFunc作为addEventListener的参数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM