之前一直很疑惑DOMContentLoaded到底是什么时候执行呢?今天总结一下,希望有错的地方能够帮忙指出~
当HTML解析遇到以下几种情况,执行顺序,以及DOMContentLoaded执行时间如下箭头处:
- 内联脚本。HTML解析中断,执行完js脚本之后再继续
- 外联脚本。先下载js文件,其他同上1
- 外联脚本+async(异步下载完js文件的时候dom未解析完成)。下载文件的时候不会中断HTML解析,但执行时会。
- 外联脚本+async(异步下载完js文件的时候dom已经解析完成)。如果下载完js文件时dom已经解析完毕,则DOMContentLoaded为dom解析完毕的时刻
- 外联脚本+defer。下载文件的时候不会中断HTML解析,dom解析完毕再执行,DOMContentLoaded为js执行完毕的时刻。