2011-07-05 104 views
3

我正在查看跟蹤domready事件的jQuery源代碼,還有一件事我完全不明白。如果腳本是動態包含並異步加載的呢?這種方式可以在腳本加載時加載文檔。 jQuery檢查的唯一地方是document.readyState。Jquery已經準備好了嗎?

如果我錯了,請糾正我,但是最近沒有將此屬性引入Firefox?如果是這樣的話--DomContentLoaded事件可能已經被觸發(即使窗口的onLoad可能),並且在這種情況下無法真正調用domready上的代碼。

回答

3

在當前版本的jQuery中,它都是用「Deferred」機制處理的。該頁面的準備就緒被封裝在一個Deferred對象中,函數被簡單地添加到「done()」隊列中。 Deferred API只是記住頁面是否準備就緒,因此在頁面準備就緒後傳遞函數作爲「就緒」處理程序將立即調用該函數。

但是,跟蹤「準備好」實際發生的代碼是非常酷的。