以下是从网页url到构建完dom树的过程,顺序不是严格一致的,因为过程可能会出现重复并且交叉;
1.当用户输入网页url的时候,webkit调用其资源加载器加载该url对应的网页(如index.html)
2.加载器依赖网络模块建立连接,发送资源请求并接收答复
3.webkit接收到各种网页或者资源的数据,其中某些资源可能是同步或者异步获取的
4.网页被html解释器转变成一系列的词语
5.解释器根据词语构建节点node,形成dom树;
6.如果节点是JavaScript的话则调用JavaScript引擎进行解释并运行
7.JavaScript代码可能会修改dom树结构
8.如果节点需要依赖其他资源,例如图片,css,视频等;调用资源加载器来加载它们,但是它们是异步的,不会阻碍当前dom树的继续创建;如果是JavaScript资源url(没有标记异步方式),则需要停止当前dom树的创建,直到JavaScript的资源加载并被JavaScript引擎执行后才继续dom树的创建;
总结:请求网页,先根据网页加载资源(有异步或者同步),再生成dom树,如遇JavaScript则执行脚本,同步会出现停止当前dom树创建; 图片、css、视频都是异步加载的