标签导航:

如何确保 HTML 中外联 script 标签按顺序执行?

script 外联标签顺序执行问题

在 HTML 开发中,有时会遇到引入多个外联 script 标签后,加载顺序与实际书写顺序不同的情况。这与 script 标签内部的 JS 顺序无关,而是由外联标签的加载方式决定的。

默认情况下,浏览器会并行加载所有外联脚本,这可能会导致依赖关系错误。为了确保脚本按顺序执行,可以为 script 标签设置 defer 属性。

defer 属性指定脚本将在整个文档解析完成后,按照带有 defer 属性的脚本标签的顺序执行。这意味着,即使脚本在文档中较晚出现,它也会在具有 defer 属性的先前脚本之后执行。

例如,对于上述代码:

<script src="./js/jquery.js" defer></script>
<script src="./js/isotope.js" defer></script>
<script src="./js/typed.js" defer></script>
<script src="./js/running.js" defer></script>
<script src="./js/scrollreveal.js" defer></script>
<script src="./js/swiper-bundle.min.js" defer></script>
<script src="./js/smooth-scroll.js" defer></script>

使用 defer 属性后,浏览器将确保脚本按以下顺序执行:

  1. jquery.js
  2. isotope.js
  3. typed.js
  4. running.js
  5. scrollreveal.js
  6. swiper-bundle.min.js
  7. smooth-scroll.js