window.addEventListener в условном - PullRequest
0 голосов
/ 11 ноября 2011

Я сталкиваюсь с странной проблемой, когда 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" в журнале.

Может кто-нибудь объяснить, почему это происходит?Есть ли способ обойти это или лучший способ сделать то же самое?

Ответы [ 2 ]

2 голосов
/ 11 ноября 2011

Javascript чувствителен к регистру.

Вы должны передать tst.onLoadFunc вместо tst.onloadFunc в качестве аргумента addEventListener.

2 голосов
/ 11 ноября 2011

Ваша заглавная буква onLoadFunc неверна в условном вызове window.addEventListener.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...