在HTML中,如果第二次加载相同的脚本文件,它还会被加载吗
In HTML, if you load the same script file a second time, will it still be loaded?
假设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
}
相关文章:
- 加载文件,然后调用回调函数
- 根据浏览器大小加载文件
- 错误:无法在“XMLHttpRequest”上执行“发送”:无法加载“文件”:AngularJS SPA
- Ajax在mootools中使用来加载文件
- 加载文件时xmlhttp不稳定,如何修复
- Require.js何时加载文件
- 有没有办法在不打包的情况下在 nodejs 上加载文件
- 如何通过从浏览器 js 控制台触发的 require.js 重新加载文件
- 使用jQuery加载文件,计算类的元素并设置间隔比率
- 如何在 AngularJS UI 路由器中从bower_component加载文件
- JavaScript 本地应用程序保存/加载文件
- 如何在特定页面上加载文件
- 内容安全策略不从本地主机加载文件
- Javascript 无法从其他目录加载文件
- Extjs MVC 文件夹结构无法加载文件
- 节点.js - 在运行时加载文件
- nodejs加载文件
- Javascript/AAJAX仅重新加载文件“;onchange”;
- 加载文件,并在特定行之后删除javascript/jquery中的所有剩余行
- 是否可以在非服务页面上使用JS/HTML5 FileReader加载文件