浏览器渲染机制之DOM树
来源:互联网 发布:淘宝买家怎么快速升钻 编辑:程序博客网 时间:2024/05/19 06:36
浏览器渲染机制的第一步是DOM树的构建,DOM树的构建过程:一般为
bytes–>characters–>tokens–>nodes–>object modal。
(1)当服务器返回一个html文件给浏览器的时候,其实浏览器接收到的是一些字节数据。
(2)浏览器根据http响应中的编码方式一般为utf-8,进行对这些字节解析成字符。如果这时候的解析编码与文件的编码方式不一样,会导致出现乱码。这也是为什么要在html文件中设置meta的原因。meta用于高速浏览器页面使用的是哪种编码格式。
(3)接下来浏览器要将解析出来的字符语义化,这就要根据页面设置的DTD中对标签的定义。DTD是W3C的一个文件,该文件中定义了哪些字符串是有意义的,哪些是没有意义的。一般设置在html页面第一行,分为过渡、严格、框架三种。每种对标签的定义都不一样,这也是为什么运用不同的DTD布局会不一样。
(4)浏览器再将语义块进行创建对象,形成一个个节点
(5)此时html解析器就开始运行了,一个个遍历节点,并加入到DOM树中,html解析器这种遍历是深层次的遍历,即要等该节点以及其子节点甚至孙子节点全部遍历完毕才会继续遍历同级节点。直至到遍历到最后一个节点,DOM树就会构建完成。然后触发domcontentloaded事件。
(6)在html解析器解析时,解析到css。图片和js时,也会并行发起请求。对于css和图片,在下载时会继续浏览器解析,。当加载结束进行应用样式时也不会停止解析,因为样式不会改变DOM树结构。
但是对于js文件,一旦浏览器解析到script标签时会立即停止渲染并执行js脚本。若是外部文件,则必须等到js脚本文件下载完成,并执行完毕js脚本才继续渲染。因为js脚本有可能会对dom元素进行操作并改变了原有的dom树,进行再次的reflow和repaint,这就浪费了这次解析。如果js脚本下载或执行过久,就会导致html解析阻塞。这也是为什么js脚本要放在body后面
- 浏览器渲染机制之DOM树
- 【浏览器渲染原理】渲染树构建之渲染树和DOM树的关系
- 【浏览器渲染原理】解析和DOM树构建之解析
- 【浏览器渲染原理】解析和DOM树构建之HTML解析器
- 【浏览器渲染原理】解析和DOM树构建之CSS解析
- 【浏览器渲染原理】解析和DOM树构建之处理脚本和样式表的顺序
- 简述浏览器渲染机制
- 浏览器的渲染机制
- 浏览器渲染机制
- 浏览器渲染机制
- 浏览器的渲染机制
- 浏览器的渲染机制
- 浏览器的渲染机制
- 浏览器的渲染机制
- 浏览器的渲染机制
- 关于浏览器渲染机制
- 深入浏览器渲染原理(一)—浏览器渲染DOM过程
- 前端面试-浏览器渲染机制
- 【Python】使用openCV与dlib实现人脸68特征点的检测与手动修改
- 15算法课程 110. Balanced Binary Tree
- 解决virtualBox虚拟机不可使用问题
- [NOIP2017模拟]裁剪表格
- [树链剖分] [bzoj2243] [SDOI2011]染色
- 浏览器渲染机制之DOM树
- java实现map和object互转的三种方法
- [noip2016]组合数问题 题解
- Linux装机必备(centos)
- C++笔记——公有继承、私有继承、保护继承、多重继承
- 堆栈实现表达式求值
- 判断素数
- Linux下安装Redis
- SQL语句备忘录