2016-08-17 41 views
0

我試圖在頭部分加載JavaScript異步。在開發者控制檯中加載頁面後,我有錯誤,「jQuery沒有定義」。一兩次刷新後腳本加載並完美工作。如果腳本標籤內沒有「異步」,也可以使用。爲什麼會發生這種情況,並有任何解決方法。在此先感謝在頭部分的異步JavaScript只能在刷新頁面後工作

+2

那麼,如果你的腳本使用jQuery,它必須在你的腳本之前被加載......只要將腳本放在''標籤的末尾並且正常加載就比較安全。 – Dellirium

回答

0

正如Dellirium所說,JQuery需要放在需要它的javascript代碼之前。您可以嘗試將JQuery放在<head>中,並在正文標記<body>的末尾放置您正在運行的腳本。

+0

這使得競爭條件不那麼嚴重,但不會將其移除。它仍然可能失敗。 – Gant

0

你可以添加一個函數來加載jQuery時執行。

<script src="jquery.js&callback=start"</script>

在這&回調=啓動執行實際的JavaScript文件的start()函數,你可以用它來繞到你的代碼。

function start() { 

    /* your code */ 

} 

原因的jQuery無法找到的第一個時代是因爲你的瀏覽器緩存的jQuery時,它是滿載。它必須在您第一次實際訪問或強制重新加載頁面時加載整個文件。

0

當您在script標記上使用async時,該腳本可以在頁面加載期間的任何時間以任意順序執行,這就是您的腳本有時只能工作的原因。你知道執行的順序,稍微加快頁面加載的時間。這通常要求您加載的腳本不依賴於彼此或精細的加載方案 - 通常使用一個不帶異步運行的回調函數,並在依賴關係報告它們可用時調用代碼。

您應該考慮如果async真的是您的設置的正確選項。

相關問題