我使用jquery getScript()調用JS。如何確保JavaScript只加載一次
有時我可以看到文件已經加載(緩存資源)。 因此,在刷新緩存頁面時不會刪除,並且同樣的文件會再次加載。
由於包含多個相同的文件,我收到錯誤。
如何避免這種情況?
$.getScript("http://localhost:8888//../../demo.js", function() { console.log('Script is loaded.'); });
我使用jquery getScript()調用JS。如何確保JavaScript只加載一次
有時我可以看到文件已經加載(緩存資源)。 因此,在刷新緩存頁面時不會刪除,並且同樣的文件會再次加載。
由於包含多個相同的文件,我收到錯誤。
如何避免這種情況?
$.getScript("http://localhost:8888//../../demo.js", function() { console.log('Script is loaded.'); });
默認情況下,$.getScript
將緩存設置設置爲false
。嘗試將它設置爲true
,看是否能解決您的問題:
$.ajaxSetup({
cache: true
});
您的通話像以前一樣添加上面:
$.ajaxSetup({
cache: true
});
$.getScript("http://localhost:8888//../../demo.js", function() { console.log('Script is loaded.'); });
直接從jQuery的docs:
緩存響應
默認情況下,$ .getScript()將緩存設置設置爲false。此 將時間戳查詢參數附加到請求URL,以確保 瀏覽器在每次請求時都下載腳本。您可以使用 $ .ajaxSetup():
$ .ajaxSetup({cache:true});可以覆蓋此功能。或者,您可以定義一個使用更靈活的$ .ajax()方法的新方法。
實施例實施例:定義一個$ .cachedScript()方法,其允許 獲取緩存腳本:
jQuery.cachedScript = 功能(URL,選項){// 允許用戶設置任何除外選項對於dataType,cache和url選項= $ .extend(options || {},{ dataType:「script」, cache:true, url:url}); //使用$ .ajax(),因爲它比$ .getScript更靈活//返回jqXHR對象,以便我們可以鏈回調返回 jQuery.ajax(options); }; //用法$ .cachedScript(「ajax/test.js」 ).done(function(script,textStatus){console。日誌(textStatus); });
假設你demo.js
文件至少包含一個函數或變量,你可以再次加載之前檢查存在:
if (typeof(your_variable) === "undefined") {
$.getScript("http://localhost:8888//../../demo.js", function() { console.log('Script is loaded.'); });
}
(其中your_variable
裏面demo.js函數或變量的名稱)
Cashingvis的一個很好的功能我解決了多次加載JS時,通過jquery之前加載II。我的問題是當我通過jquery調用一個文件加載時,我在該加載文件中有一個jquery文件,現在它只加載一次,然後我現在只能加載一次。非常感謝你,祝你有美好的一天。
您是使用動態後端語言還是這些html頁面? – Snowburnt
'if(!window.somethingInTheFile)$ .getScript(...);' – epascarello
我正在使用它來編譯大豆文件。 – Sridhar