假设您在HTML文件中包含以下内容:
<script type="text/javascript" src="whatever.js"></script>
<script type="text/javascript" src="whatever.js"></script>
第二次加载whatever.js
,或浏览器是否会看到它已加载并跳过重新加载?
注意:这对我来说是因为我使用的HTML模板包含其他代码段,其中一些可能会加载相同的脚本,从而导致可能的重复。我想确保我的页面不会被重复的脚本加载所拖累。
答案 0 :(得分:3)
是的,它会重新加载它。您可以做的是检查当前脚本元素是否已经显示在您已跟踪的“已加载”列表中:http://jsfiddle.net/kvPcU/1/。
在页面顶部的某处,在您获取文件之前:
var loaded = {};
然后:
var elements = document.getElementsByTagName('script');
var currentElement = elements[elements.length - 1]; // element of currently executing script
if(!loaded[currentElement.src]) {
loaded[currentElement.src] = true;
// run code
}
答案 1 :(得分:2)
这取决于“跳过”装载的含义。
如果您想避免两次点击服务器,那么在服务器上设置适当的缓存控制将避免文件被下载两次。
如果你想避免文件被执行两次,那么答案是否定的:浏览器不会跳过第二次执行文件。您可以通过将文件包装在一个巨大的“if”语句中来检查这个问题,并检查全局变量或HTML元素以测试之前是否已加载该文件。