2011-11-11 36 views
0

我遇到了一個奇怪的問題,其中window.addEventListener(或window.attachEvent)從if/else塊內調用時似乎沒有被觸發。例如,假設我有以下的HTML和JavaScript文件:window.addEventListener在條件

的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」記錄。但是,我做不是請參閱「在測試儀」記錄。

現在,如果我取消了if/else之外的addEventListener行註釋,我確實看到「在Tester中」被記錄。

有人可以解釋爲什麼會發生這種情況嗎?有沒有辦法解決這個問題,或者有更好的方法來完成同樣的事情?

+0

你有一個錯字:第一個例子中'txt.onloadFunc'缺少一個大寫的'L',以及你的'window.attachEvent'調用。 –

+1

'window.attachEvent(window.attachEvent(「onload」,tst.onloadFunc));'看起來也是錯誤的。 –

回答

2

Javascript區分大小寫。

您應該將tst.onLoadFunc代替tst.onloadFunc作爲addEventListener的參數。

+0

Arg,感謝您捕捉到......沒有任何事情像打字錯誤開始新的一天。 – septagram

2

在條件window.addEventListener調用中,您的大寫字母onLoadFunc錯誤。

相關問題