2014-07-11 61 views
1

我正在加載jquery沒有得到pagespeed的問題。但是現在可能會發生我的腳本在jQuery甚至被加載之前被執行的情況。這導致錯誤,如函數jQuery未定義。我怎樣才能確保jQuery被加載?JQuery加載了對手。如何確保jQuery被加載?

+3

恩..喜歡,不要使用延期? – MightyPork

+1

您可以使用像require.js這樣的異步裝載器,但這可能意味着重新考慮整個代碼。爲什麼不嘗試將jQuery包含到頁面的底部,而您的腳本只是在jQuery之後?您可以將所有內容都包含在文檔就緒事件中。 – amenadiel

+0

在jquery之後加載所有的腳本。請注意,如果代碼位於底部或延期,則不需要準備好文檔事件。 –

回答

1

你沒有顯示你用來加載jQuery的代碼,但如果你想以這種方式加載,那麼你必須通過某種onload回調來觸發你使用jQuery的任何代碼在jQuery成功加載時調用。

所有在頁面加載時使用jQuery的代碼都必須從這個onload處理函數中調用的東西開始調用。在加載jQuery之前,您將無法直接使用$(document).ready()

如果您包含用於加載jQuery的代碼,我們可以更具體地瞭解如何加載jQuery。有些庫可以爲你處理,但是你自己編寫代碼的代碼也不是很多。如果你想跨瀏覽器的兼容性進一步

<script> 
function jQueryLoaded() { 
    // put your page initialization code that uses jQuery here 
    // or call some other functions that do your page initialization 
} 
</script> 
<script defer="defer" onload="jQueryLoaded()" src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 

例如,如果您使用的是defer屬性在<script>標籤,你真行與IE9或更高版本,那麼你可以這樣做回到IE9以上,那麼你應該動態地添加腳本標記,以便你可以在老版本的IE中使用readystatechange事件處理程序來監視它。有關詳細信息,請參見this post中的loadScript()函數。