如果在单个HTML文档中多次使用具有相同"src"属性的<script>标记会发生什么?

Jus*_*zer 17 html javascript asp.net-mvc

虽然我几乎可以肯定这个问题的答案是浏览器特定的,但是当使用多个<script>标签并具有相同的src属性时,是否有任何浏览器定义行为?

例如...

<script src="../js/foo.js"></script>
...

<!-- what happens here? -->
<script src="../js/foo.js"></script>
Run Code Online (Sandbox Code Playgroud)

我首先提出这个问题的原因是,在我的特定情况下,我在使用JQuery的ASP.NET MVC应用程序中使用部分视图.JQuery JS文件都通过脚本标记包含在主模板文件中.我更喜欢将脚本标记添加到部分视图文件中,以便在主模板的上下文之外使用它们时,它们将自动包含所有必需的JS文件,而不依赖于另一个视图或模板来包含它们.但是,我当然不希望导致JS文件多次转移到客户端,或任何其他可能对用户体验产生负面影响的副作用.

我现在的想法是,大多数(如果不是全部)主要浏览器(FF,Safari,IE,Opera)将在第一次使用时缓存JS文件,然后在后续脚本标签上浏览器将使用缓存副本如果可用且未过期.但是,缓存行为通常可以通过浏览器配置进行更改,因此依赖任何类型的缓存行为似乎都不太"安全".

我是否必须接受这样的事实,即我的部分视图将依赖于其他模板或视图,包括适当的JS文件?

JW.*_*JW. 13

即使它们被缓存,您也可能遇到问题,因为相同的代码将被执行两次.至少,这将导致浏览器花费超过必要的时间.它可能会导致错误,因为大多数JavaScript代码都没有写入执行两次.例如,它可以将相同的事件处理程序连接两次.