2011-08-17 21 views
2

我不知道爲什麼我有這樣一個功能:爲什麼IE在我們調用一個函數不接受括號

<script type="text/javascript"> 
    function setSomeEnvValue() { 
     myLoadStatus = true; 
     myColor = 'black'; 
    } 
    window.onload = setSomeEnvValue(); 
</script> 

我不知道爲什麼IE在顯示錯誤:

window.onload = setSomeEnvValue(); 

當我更改此代碼:

window.onload = setSomeEnvValue; 

這讓我瘋了。如果setSomeEnvValue()有一些像setSomeEnvValue(myVar1, myVar2)這樣的參數,那麼在IE中使用它時該如何調用它?

非常感謝你!

回答

4

在這種情況下,IE具有正確的實現。

當您設置一個回調(或事件處理程序),如window.onload,基本上就在觸發該事件時應該執行,你給它的功能的瀏覽器。

通過寫window.onload = setSomeEnvValue();,你說,每當觸發window.onload事件setSomeEnvValue的返回值應該叫。當然,如果你的函數返回一個閉包,這個可能是,但我會假設這不是這種情況。

2

什麼window.onload = setSomeEnvValue();意味着運行setSomeEnvValue()現在並分配結果window.onload。你需要的是將函數本身分配給window.onload,以便瀏覽器稍後可以運行它。

如果你想window.onload調用函數的一些參數,你事先知道,做一個新的函數(不帶參數)調用與所需參數的其他功能,並指定window.onload

function myOnload() { 
    setSomeEnvValue(myVar1, myVar2); 
} 

window.onload = myOnload; 

甚至

window.onload = function() { setSomeEnvValue(myVar1, myVar2); } 
相關問題