2014-03-07 50 views
0

每當我使用jsFiddle我看到兩個選項來通過jQuery:onLoad或onDomReady初始化內容。jQuery onLoad x jQuery onDomready

I用我編寫的大部分腳本進行了測試,結果沒有功能差異。在Google上搜索我發現主要的區別之一是,通過onLoad,腳本只會在加載所有元素後開始運行,包括CSS外部文件,JS外部文件,圖像等,如果您需要以某種順序加載JS文件,但是在任何時候其中一個文件引用另一個尚未加載的文件,而通過onDomReady加載HTML頁面內容之後,腳本開始被加載,而不必其他人加載是。

得到這個區別對嗎?是否還有其他差異需要研究和認識?如答案

+0

@Pilot我不認爲你理解我的問題。我並不是在尋求代碼方面的幫助,而是在尋求幫助來理解這兩種方法之間的差異。我寫了多少了解差異並要求提供更多信息。我想了解每個人的概念。我必須爲此寫一個小提琴嗎? –

+0

一個主要的區別,jQuery的就緒處理程序將被解僱甚至處理程序設置後的DOM有效'準備好',jQuery的內部使用承諾。如果在加載窗口後設置了處理程序,則Window onload事件不會被觸發。例如:http://jsfiddle.net/c58a6/ –

+0

我看到你的小提琴,並意識到onDomready可以執行多次,而onLoad只能執行一次,是嗎? –

回答

1

製作評論:

一個主要的區別,jQuery的準備「僞」事件將jQuery的內部使用 承諾被解僱,甚至處理 是DOM後設定爲有效「準備好」。如果在加載了 窗口後設置了處理程序,則Window onload事件將不會被觸發。例如:http://jsfiddle.net/c58a6/

應該指出的是,沒有內置的等效jQuery文檔就緒事件。例如,DOMContentLoaded內部生成事件在DOM準備就緒後將不會被觸發。

+0

你能否進一步解釋一下你對「jQuery使用內部承諾」的含義?它與[this](https://api.jquery.com/promise/)有關嗎? –

+0

雅,就是這樣。但是如果你不知道承諾和異步行爲的概念,可能有點難以解釋它(至少從一個像我這樣的人)。您可以檢查jQuery源代碼並搜索'readyList',它是使用的延遲對象,然後公開承諾接口。延遲對象和承諾之間的區別在於承諾不能手動解決。但就像我說的,可能會很長時間來解釋這一切 –

+0

而jQuery網站的文檔也不清楚。 –