重复的脚本标签会导致多次运行吗?
Do duplicate script tags cause multiple runs?
如果我有多个 <script>
标签指向同一个 Javascript 资源,浏览器是否会为每个 <script>
标签 运行 一次?还是浏览器去重了?
在这种情况下会发生什么?
<script src="example.js"></script>
<script src="example.js"></script>
example.js
每次被脚本标签 引用时都会得到 运行。浏览器不会尝试对其进行重复数据删除。 (但是它可能只从服务器请求一次。)
即使使用 async
和 defer
属性也是如此。
如果出于某种原因,您希望支持重复的脚本标签,这些标签只会导致代码 运行 一次,您可以采用类似于 include guards for C.
的技术
例如,example.js
可以包含:
if (window.example === undefined) {
window.example = {
publicFunction: function publicFunction() {
// ...
},
// ...
};
}
如果我有多个 <script>
标签指向同一个 Javascript 资源,浏览器是否会为每个 <script>
标签 运行 一次?还是浏览器去重了?
在这种情况下会发生什么?
<script src="example.js"></script>
<script src="example.js"></script>
example.js
每次被脚本标签 引用时都会得到 运行。浏览器不会尝试对其进行重复数据删除。 (但是它可能只从服务器请求一次。)
即使使用 async
和 defer
属性也是如此。
如果出于某种原因,您希望支持重复的脚本标签,这些标签只会导致代码 运行 一次,您可以采用类似于 include guards for C.
的技术例如,example.js
可以包含:
if (window.example === undefined) {
window.example = {
publicFunction: function publicFunction() {
// ...
},
// ...
};
}