1  创建Document对象  开始解析web页面  解析HTML元素和他们的文本内容后添加Element对象和Text节点到文档中
    这个阶段  document.readyState = ‘loading’
2  遇到link链接外部css  创建线程加载  并继续解析文档
3  遇到script链接外部js  并且没有设置async、defer  浏览器加载  并阻塞  等待js加载完成并执行该脚本  然后继续解析文档
4  遇到script链接外部js  并且设置有async、defer  浏览器创建线程加载  并继续解析文档
    对于async属性的脚本  脚本加载完成后立即执行(异步加载的js文件里面禁止使用document.write()  它会把之前加载的文档全部清空)
5  遇到img等标签  先正常解析dom结构  然后浏览器异步加载src  并继续解析文档
6  文档解析完成后  document.readyState = ‘interactive’(活跃的/动态的)
7  文档解析完成后  所有设置有defer的脚本会按照顺序执行(注意与async的不同  但同样禁止使用document.write())
8  文档解析完成后  document对象触发DOMContentLoaded事件(该事件只能用addEventLiatener来执行)
    这也标志着程序执行从同步脚本执行阶段  转化为事件驱动阶段
9  当所有async的脚本加载完成并执行后、img等加载完成后  document.readyState = ‘complete’
    同时  window对象触发load事件
10  从此  以异步响应方式处理用户输入、网络事件等
