在HTML中,如果您第二次加载相同的脚本文件,它是否仍会被加载?

时间:2012-09-03 17:43:19

标签: javascript html

假设您在HTML文件中包含以下内容:

<script type="text/javascript" src="whatever.js"></script>
<script type="text/javascript" src="whatever.js"></script>

第二次加载whatever.js,或浏览器是否会看到它已加载并跳过重新加载?

注意:这对我来说是因为我使用的HTML模板包含其他代码段,其中一些可能会加载相同的脚本,从而导致可能的重复。我想确保我的页面不会被重复的脚本加载所拖累。

2 个答案:

答案 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元素以测试之前是否已加载该文件。