浏览器工作原理:入门

370 阅读2分钟

序言

前几天看了一份关于浏览器工作原理的PPT -> HOW BROWSER WORKS, 觉得还不够,又找了一篇比较更详细的文章 -> 浏览器的工作原理:新式网络浏览器幕后揭秘, 进行补充;有耐心的可以直接跳过我这篇博客看以上的文章,也可以花5分钟时间先看看我这篇博客 [机智脸]

1. 解析DNS

tips:

    1. 请按步骤阅读图片
    1. 第六七步不太确定,欢迎指正

2. 当获取到代码后要怎么做

2.1 解析HTML构建DOM树

tips:

html不是与上下文无关的语法[就是:我当前编写的跟我前后代码无关],所以html的编写规范很不统一,因此,为了达到统一的效果,需要浏览器解析过程中,具有强大的容错率。

  • 状态机:插入模式

HTML是按照一定的流程构建DOM树,构建中执行到某个阶段,就会创建某个元素,然后从HTML文档中解析相关的进行补充。如:执行到 before Head,就是html文档中没有head 也会创建一个head节点。因此: 就算html文档中只是寥寥无几的几个数字,也能构建出完整的树结构。

  • 浏览器容错

浏览器执行一定的规则来对有错误的html修改,譬如:未闭合的元素会帮你闭合,元素冲突时,会关闭某些元素,请自行探索

2.2 呈现树结构

说明:

  • 呈现树与DOM树不是一一对应的,譬如head元素只是一些说明引用,后期是不需要参与页面布局的,所以不会出现呈现树里面。还有:display:none; 等

  • 样式表层叠顺序,后者会覆盖前者。

2.3 布局呈现树

布局有:全局布局和增量布局

全局布局

全局布局触发原因可能包括:

1.影响所有呈现器的全局样式更改,例如字体大小更改。 2.屏幕大小调整。

增量布局

只对 dirty 呈现器进行布局 [这句理解不够]

2.4 绘制呈现树

有个小动图可以去看看: 绘制动图

跟布局一样:绘制也分全局绘制和增量绘制

绘制顺序

1.背景颜色 2.背景图片 3.边框 4.子代 5.轮廓

后记

每个浏览器的原理都不一样,以上我只再选择了Webkit内核的浏览器部分有趣的内容,其他请自行阅读:浏览器的工作原理:新式网络浏览器幕后揭秘

参考资料