如图所示,结论:
- 普通script的加载与执行是阻塞DOM渲染的,其顺序取决于script标签在文档中的位置,并且会在DOMContentLoaded事件之前执行完毕
- 标有async的script加载与执行都是异步的,不阻塞DOM渲染,但是无法保证顺序,会在load事件前执行完毕,但无法保证在DOMContentLoaded事件的前或后
- 标有defer的script加载是异步的,但是执行会在所有DOM渲染之后,在DOMContentLoaded事件之前,顺序取决于script标签在文档中的位置
- 标有defer的外部script在各个浏览器的表现比较一致,但如果是内联script的情况,只在IE中支持较好,所以尽量避免内联script使用defer
网友评论