2011-03-25 69 views
10

我有一個在頁面加載時,我一直在使用這個代碼啓動腳本下面來啓動它:的attachEvent /的addEventListener到窗口的onload /負載 - 首選方式

if (window.addEventListener) { 
    window.addEventListener('load', otherRelatedParts, false); 
} 
else if (window.attachEvent) { 
    window.attachEvent('onload', otherRelatedParts); 
} 

但今天我試着用自調用這樣的功能:

(function() { 
otherRelatedParts(); 
}()) 

它似乎工作,在所有的瀏覽器和少代碼。這是將事件添加到窗口加載的首選方式嗎?

+7

不需要自我調用功能,只需'otherRelatedParts()'就可以了。 – meouw 2011-03-25 22:04:50

回答

1

我想上面的if子句是爲覆蓋一些跨瀏覽器問題而編寫的。你應該將這些東西從你的代碼中分解出來。

正如其他人以前所做的那樣,您不妨使用一些庫作爲jQuery。你應該在那裏尋找.ready()

+16

開發人員可能被要求使用核心JavaScript有多種原因,有時候像jQuery這樣的庫只是矯枉過正。 – squidbe 2012-10-24 20:41:35

11

您的自調用函數將比window.onload早執行。它將在瀏覽器讀取它時執行。在大多數情況下,它實際上沒有任何區別,所以你可以這樣使用它。當所有對象(圖像,JavaScript文件等)被下載時,通常會引發Window.load。 $(document).ready()在window.onload之前觸發 - 當DOM準備好進行操作時。

相關問題