复述一下浏览器呈现引擎的基本工作流
2014-04-05 00:00
771 查看
前面小节我们介绍了浏览器呈现引擎的主流程,并给出流程图。
因为这个过程很重要,这里再对这个流程复述一次:
1. 解析HTML构建DOM树:
这里解析三个东西:HTML/SVG/XHTML,CSS及javascript。解析CSS会产生CSS规则树,解析javascript主要是通过DOM API和CSSOM API来操作DOM Tree和CSS。
2. Rule Tree渲染树构建:
解析完成后,浏览器引擎会通过DOM Tree 和 CSS Rule Tree 来构造 Rendering Tree。不过,Rendering Tree 渲染树并不等同于DOM树,因为一些像Header或display:none的东西就没必要放在渲染树中了。CSS 的 Rule Tree主要是为了完成匹配并把CSS Rule附加上Rendering Tree上的每个Element。也就是DOM结点。
3. 渲染树布局:
计算每个element确切的显示位置,也就是layout和reflow的过程。
4. 绘制渲染树:
通过调用操作系统Native GUI的API绘制将每一个节点绘制出来。
看起来步骤繁琐,但是为了更好的用户体验,浏览器会尽可能快的把内容显示出来,并不会等到所有的HTML解析完后才创建并布局渲染树,它会在处理后续内容的同时把处理过的局部内容先展示出来。
一些题外话:关于现在的渲染引擎
Firefox, Safari两种浏览器构建于两种渲染引擎之上:Firefox使用Gecko —— Mozilla自家的渲染引擎;Safari 和 Chrome 都使用 Webkit,而Chrome现在从开源的Webkit上分叉出自己的开源浏览器引擎Blink,Opera宣布跟随Google Chrome的脚步,将弃用自家的Presto引擎,支持Blink引擎,而IE使用的是Trident内核。不过众多国内主流浏览器使用的双引擎一般都是Webkit和Trident两种内核。
因为这个过程很重要,这里再对这个流程复述一次:
1. 解析HTML构建DOM树:
这里解析三个东西:HTML/SVG/XHTML,CSS及javascript。解析CSS会产生CSS规则树,解析javascript主要是通过DOM API和CSSOM API来操作DOM Tree和CSS。
2. Rule Tree渲染树构建:
解析完成后,浏览器引擎会通过DOM Tree 和 CSS Rule Tree 来构造 Rendering Tree。不过,Rendering Tree 渲染树并不等同于DOM树,因为一些像Header或display:none的东西就没必要放在渲染树中了。CSS 的 Rule Tree主要是为了完成匹配并把CSS Rule附加上Rendering Tree上的每个Element。也就是DOM结点。
3. 渲染树布局:
计算每个element确切的显示位置,也就是layout和reflow的过程。
4. 绘制渲染树:
通过调用操作系统Native GUI的API绘制将每一个节点绘制出来。
看起来步骤繁琐,但是为了更好的用户体验,浏览器会尽可能快的把内容显示出来,并不会等到所有的HTML解析完后才创建并布局渲染树,它会在处理后续内容的同时把处理过的局部内容先展示出来。
一些题外话:关于现在的渲染引擎
Firefox, Safari两种浏览器构建于两种渲染引擎之上:Firefox使用Gecko —— Mozilla自家的渲染引擎;Safari 和 Chrome 都使用 Webkit,而Chrome现在从开源的Webkit上分叉出自己的开源浏览器引擎Blink,Opera宣布跟随Google Chrome的脚步,将弃用自家的Presto引擎,支持Blink引擎,而IE使用的是Trident内核。不过众多国内主流浏览器使用的双引擎一般都是Webkit和Trident两种内核。
相关文章推荐
- js 检测浏览器,呈现引擎和平台
- 浏览器内核、JS 引擎、页面呈现原理及其优化
- 基于javascript代码检测访问网页的浏览器呈现引擎、平台、Windows操作系统、移动设备和游戏系统
- 检测访问网页的浏览器呈现引擎、平台、Windows操作系统、移动设备和游戏系统
- 深入解析浏览器的幕后工作原理(二) 呈现引擎
- js学习小结(七)2014.5.5(识别呈现引擎、浏览器版本和操作平台)
- 基于javascript代码检测访问网页的浏览器呈现引擎、平台、Windows操作系统、移动设备和游戏系统
- 【学习点滴-js】js 检测浏览器,呈现引擎和平台。
- net控件中数据导到Excel的格式 首先,我们了解一下excel从web页面上导出的原理。当我们把这些数据发送到客户端时,我们想让客户端程序(浏览器)以excel的格式读取它,所以把mime类型设为:application/vnd.ms-excel,当excel读取文件时会以每个cell的格式呈现数据,如果cell没有规定的格式,则excel会以默认的格式去呈现该cell的数据。这样就给我们提供了自定义数据格式的空间,当然我们必须使用excel支持的格式。下面就列出常用的一些格式: 1) 文本
- 浏览器识别(包括呈现引擎,浏览器版本,操作系统,移动设备)
- 各浏览器呈现引擎的线程问题
- Vendor Prefix:为什么需要浏览器引擎前缀
- CSS在主流浏览器中呈现的常见区别
- 接口,抽象类,实体类----------回忆一下基本概念
- 解释一下你对盒模型的理解,以及如何在 CSS 中告诉浏览器使用不同的盒模型来渲染你的布局。
- Webdriver学习笔记(二)浏览器的基本操作
- 记录一下解决webdriver启动浏览器报“Unable to find a free port”问题的方法
- 浏览器的渲染引擎
- 关于redis基本操作,了解一下
- 解释一下,在你往浏览器中输入一个URL后都发生了什么,要尽可能详细(转)