浏览器的主要做用是将用户输入的“URL”转变为可视化图像 ,其中包含两个过程:javascript
从 URL到构建DOM树
从DOM生成可视化图像
网页的渲染过程
网页渲染有一个特性,一般视图比屏幕可视化面积大。因此在渲染时通常
加入滚动条
,就用户体验来讲,垂直方向的滚动条效果好过水平页面的滚动条效果
这个过程当中的数据和模块包括:css
从网页的URL到构建完DOM树
WebKit调用资源加载器加载该URL对应的网页
依赖网络创建链接
,发送请求并接受答复。接受到各类网页或者资源的连接
,其中某些资源经过同步或者异步获取HTML解释器解释为一系列词语
根据词语构建节点(NODE),造成DOM树
。JavaScript代码就调用JavaScript引擎解释并执行
JavaScript代码可能会修改DOM树的结构
图片,css ,视频等,调用资源加载器来加载他们但这个过程异步的
,不会阻碍当前dom树的构建,若是是javascript 资源url(没有标记异步,经过async和defer)则须要中止当前DOM树的建立 。直到js资源加载并执行完毕以后才会继续DOM树的建立上述过程当中,网页会发出“DOMConent”
和DOM onload
事件,分别在DOM树构建完以后
,以及DOM树建完而且网页因此来的资源都加载完
以后发生,由于某些资源的加载并不会阻碍DOM树的建立,因此这两个事件多数时候不是同时发生的java
DOMConentLoad: DOM树构建完以后
onload : DOM树建完而且网页因此来的资源都加载完
web
webkit利用cssTree和DOMTree构建renderTree 直到绘图上下文
RenderObject树的简历并不表示DOM树会被销毁,事实上,上图中的四个内部结构一直存在,直到网页被销毁
,由于它们对于网页的渲染起了很是大的做用浏览器
从绘图上下文到最终的图像(主要依赖2D和3D图形库)
上面介绍的是一个完整的渲染过程.现代网页不少是动态网页,这意味着在渲染完成以后,因为网页的动画或者用户的交互,浏览器其实一直在不一样地重复执行渲染过程网络
欢迎关注个人公众号FE未道 ,不间断更新, 咱们一块儿脚踏实地,仰望星空。dom