Я сталкиваюсь с странной проблемой, когда window.addEventListener (или window.attachEvent), похоже, не запускается при вызове из блока if / else.Например, скажем, у меня есть следующие 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 в условных" вошли.Тем не менее, я не см. "В тестере" вошли.
Теперь, если я раскомментирую строку addEventListener вне if / else, я увижу "in in Tester" в журнале.
Может кто-нибудь объяснить, почему это происходит?Есть ли способ обойти это или лучший способ сделать то же самое?