如何避免 script 标签引入的 JS 文件阻塞 DOM 加载?
如何避免 script 标签引入的 js 文件阻塞 dom 加载?
当 script 标签引入的 JS 文件未采用异步处理时,无论文件下载时机,都将在 DOM 生成后方执行。为了避免 JS 文件阻塞 DOM 加载,可以采取以下步骤:
-
使用 defer 属性:
向 script 标签添加 defer 属性,使浏览器在解析 HTML 时立即下载 JS 文件,但在 DOM 加载完成之前延迟其执行。<script defer src="script.js"></script>
-
使用 async 属性:
向 script 标签添加 async 属性,使浏览器在解析 HTML 的同时异步加载和执行 JS 文件。<script async src="script.js"></script>
-
使用动态创建 script 标签:
通过 JavaScript 动态创建 script 标签,并在标签创建后立即执行。这样做可以将 JS 文件加载推迟到 DOM 加载之后。var script = document.createElement('script'); script.src = 'script.js'; script.onload = function() { // JS 文件加载完成后执行 }; document.head.appendChild(script);