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

标签 javascript html asp.net-mvc

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

例如...

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

<!-- what happens here? -->
<script src="../js/foo.js"></script>

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

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

我是否必须接受我的部分 View 将依赖于其他模板或 View (包括适当的 JS 文件)这一事实?

最佳答案

即使它们被缓存,您也可能会遇到问题,因为相同的代码将被执行两次。至少,这会导致浏览器花费比必要更多的时间。而且它可能会导致错误,因为大多数 JavaScript 代码并不是为了执行两次而编写的。例如,它可能会两次附加相同的事件处理程序。

关于javascript - 如果在单个 HTML 文档中多次使用具有相同 "src"属性的 &lt;script&gt; 标记会发生什么情况?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1533723/

相关文章:

javascript - 获取 jquery 元素的值?

javascript - 某些用户滚动后强制向下滚动到特定点 [React]

javascript - 模型绑定(bind)到自定义组件 - Asp.net Mvc

javascript - Laravel 无法通过 ajax 上传图像

javascript - 在按钮上应用/删除 Css

javascript - 如何监听子窗口关闭?

Javascript 像素操作 : These aren't my colors

javascript - 区分浏览器自动滚动和用户滚动

c# - 为什么我的模型在发布后丢失了下拉列表项?

asp.net-mvc - 在不使用 EF 的情况下在 appsettings.json 中获取多个连接字符串