【发布时间】:2012-11-14 15:28:30
【问题描述】:
根据我单击#load 的次数,helloworld.js 似乎被多次加载。我这样说是因为当我查看 Google Chrome 开发者工具网络选项卡时,它显示 helloworld.js 的次数与我点击 #load 的次数一样多。
$(document).ready(function() {
$("#load").click(function(){
$.getScript('helloworld.js', function() {
hello();
});
});
});
hello() 函数如下所示:
function hello(){
alert("hello");
}
是否可以检测helloworld.js是否已经加载?
所以如果还没有加载,就加载它,如果已经加载,就不要加载它。
如果我点击#load 按钮 4 次,这就是开发者工具当前向我显示的内容:
【问题讨论】:
-
你也可以让它使用缓存:
$.ajaxSetup({ cache: true });(取自here)。 -
调用应该已经被浏览器缓存了……
-
@ShadowWizard,这似乎有效,谢谢。这应该是一个答案。
-
@feeela 默认情况下,jQuery 将为每个 AJAX 调用添加唯一的时间戳,这样它就不会被缓存。通过将属性设置为 false,它不会添加任何唯一值。
-
@feeela
$.getScript是个例外,它默认为cache:false,除非在ajaxSetup中特别设置。 (根据文档)
标签: javascript jquery google-chrome internet-explorer-8 getscript