在HTML中,如果第二次加载相同的脚本文件,它还会被加载吗

In HTML, if you load the same script file a second time, will it still be loaded?

本文关键字:加载 文件 脚本 HTML 如果 第二次      更新时间:2023-09-26

假设HTML文件中有以下内容:

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

会再次加载whatever.js吗?还是浏览器会看到它已经加载并跳过重新加载?

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

这取决于"跳过"加载的含义。

如果您想避免两次访问服务器,那么在服务器上设置适当的缓存控制将避免文件被下载两次。

如果你想避免文件被执行两次,那么答案是否定的:浏览器不会跳过第二次执行文件。您可以通过将文件包装在一个巨大的"if"语句中,并检查全局变量或HTML元素来测试该文件以前是否加载过来解决这个问题。

是的,它会重新加载它。您可以做的是检查当前脚本元素是否已经在您跟踪的"已加载"列表中显示: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
}