<script>标签
<script>有几个比较重要的属性,type,src,defer,async.主要是defer,async要注意一下.
两者都是用于异步加载脚本的,defer和async的区别在于
defer:
- defer只适用于外联脚本,如果script标签没有指定src属性,只是内联脚本,不要使用defer
- 如果有多个声明了defer的脚本,则会按顺序下载和执行
- defer脚本会在DOMContentLoaded和load事件之前执行
async:
- 只适用于外联脚本,这一点和defer一致
- 如果有多个声明了async的脚本,其下载和执行也是异步的,不能确保彼此的先后顺序
- async会在load事件之前执行,但并不能确保与DOMContentLoaded的执行先后顺序
DOMContentLoaded是比load还早执行的事件
window的load事件会在页面中的一切都加载完毕时触发,但这个过程可能会因为要加载外部资源过多而颇费周折。而DOMContentLoaded事件则在形成完整的DOM树之后就会触发,不理会图像、JavaScript文件、CSS文件或其他资源是否已经下载完毕。
在实际开发中async基本没啥作用,不按顺序也不考虑依赖,基本用defer
网友评论