defer
和 async
是用于控制脚本加载和执行的 HTML <script>
标签属性。
defer
和 async
的主要区别在于它们对脚本的加载和执行的影响。
-
defer
属性告诉浏览器立即下载脚本,但延迟执行,等到文档加载完成后再按照它们在页面中出现的顺序依次执行。这意味着脚本不会阻止文档的解析和渲染,并且它们也不会阻止其他脚本的执行。如果多个脚本都使用defer
属性,则它们将按照它们在页面中出现的顺序依次执行。 -
async
属性告诉浏览器立即下载脚本,但它们不一定按照它们在页面中出现的顺序执行。它们将在下载完成后立即执行。这意味着脚本不会阻止文档的解析和渲染,但可能会阻止其他脚本的执行。如果多个脚本都使用async
属性,则它们将按照它们下载完成的顺序依次执行。
需要注意的是,当使用 defer
和 async
属性时,浏览器的支持情况可能不同。一些较旧的浏览器可能不支持这些属性,或者仅支持 defer
而不支持 async
。因此,为了确保脚本的兼容性,建议在使用 defer
和 async
属性时,同时提供一个备用脚本,并考虑使用特性检测来检查浏览器是否支持这些属性。