script标签异步属性。

# async

  • 引入的JS需要异步加载和执行,此属性只适用外部引入的JS。
  • 脚本异步执行不会阻塞页面加载,但是不会保证其加载的顺序,如果多个async执行,则先执行加载完毕的JS文件,因此通过此方式加载的JS尽量不要包含其他依赖。

# defer

  • 引入的JS需要异步加载和执行,在文档被解析完成后执行,这样就不会阻塞页面加载,而且它将会按照原本的加载顺序执行。适用于有依赖关系的JS文件。
  • Html4.0中定义了defer,Html5.0中定义了async。

# 其他情况

  • 如果只有async,那么脚本在下载完成后异步执行。
  • 如果只有defer,那么脚本会在页面解析完毕之后执行。
  • 如果都没有,那么脚本会在页面中马上执行,停止文档解析阻塞页面加载。
  • 如果两个属性都存在,则async生效,低版本时(低于HTML5.0),defer生效。
  • 不过还是推荐直接把script标签放在body底部。
最近更新时间: 2020/9/6 11:30:38