<script>标签无src属性时async属性是否会被忽略?
问题解答
没有设置src属性的<script>标签上的async属性会被浏览器完全忽略,和defer属性的规则完全一致。
- 这是HTML标准的明确规定:
async和defer两个属性仅作用于外部引入的脚本,也就是带有src属性的<script>标签,对内嵌脚本无任何效果。 - 两个属性的设计目的就是控制外部脚本的加载、执行时机,避免阻塞页面DOM解析。而内嵌脚本不存在独立的资源加载过程,浏览器解析到对应标签就会立即同步执行,自然不需要也不支持异步控制逻辑。
你可以参考下面的代码示例验证效果:
<!-- 外部脚本的async属性生效,不会阻塞页面解析,加载完成后自动执行 --> <script async src="./external-script.js"></script> <!-- 内嵌脚本的async属性被忽略,脚本会被立即同步执行 --> <script async> console.log('内嵌脚本执行,async属性不生效'); </script>
内容的提问来源于stack exchange,提问作者Przemysław Sałek
相关产品推荐
相关产品推荐

