我使用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