2012-02-09 21 views
2

我目前正在研究一些項目,其中一些錯誤在我們的jQuery AJAX調用中彈出。在大多數情況下,我們有一些元素需要進行初始化,以便在點擊時(或其他事件觸發器)執行某些操作。我們已經決定解決其中的一些問題,以在html結尾使用內聯腳本,而不是依賴於$(document).ready事件觸發器。在應用程序中是否有加載jQuery的競爭條件?

然而,這導致我們想知道如果jQuery庫本身(它正在通過谷歌加載)沒有足夠快地加載,會發生什麼。特別是IE瀏覽器,瀏覽器是否會智能地等待執行這些代碼行,直到加載jQuery庫?在這種情況下,競爭條件是否可能?到目前爲止,我們大多數的問題似乎都出現在IE(甚至8和9)或Firefox的少數情況下。

編輯: 從使用$(document).ready事件觸發的改變建議在How can I ensure that a link's default action is always disabled?其中也涉及到這個問題的情況。它似乎與html底部的內聯腳本一起工作良好。目前還不清楚問題是否因爲jQuery沒有加載(或其他元素),或者如果事件從未正確觸發。

回答

1

我不明白了一個道理,爲什麼會放置Ajax調用會更好以外$(document).ready ......要加載實際$(document).ready等待所有文件...這就是爲什麼它被使用(當然,不是only reason

所以,只要你的jQuery Ajax調用被放置在$(document).ready回調中,你可以確定你所有的js文件都是在這之前加載的,並且你應該在其他地方尋找你的問題的原因。

+0

但是,如果jQuery由於某種原因被加載延遲會發生什麼? $(document).ready會失敗,因爲它依賴於被加載的jQuery對瀏覽器有意義嗎? – Kenneth 2012-02-09 20:37:21

+1

它不會失敗,只要您的

0

某些瀏覽器在加載跨域腳本之前加載本地服務器上的所有javascript。因此,在從Google加載jQuery庫之前,可能首先加載腳本。我會建議使用$(document).ready觸發器。