浏览器的工作原理是什么?

从用户体验上看,现代浏览器非常强大。所有主流的网页浏览器都支持通过多个窗口或者标签页来同时打开多种信息资源,并且还能拦截那些不请自来的弹出式广告,防止不必要的窗口打扰用户。

浏览器的功能还能被进一步增强,这就是所谓的浏览器扩展。它是一种专门用来扩展网页浏览器功能的计算机程序,而且现在每个主流的网页浏览器都支持这类扩展的开发,用户可以根据自己的需求来安装。

在构建完Dom树之后,浏览器并不会直接显示它。接下来它会构建一棵渲染树,这棵树和Dom树是不一样的。比如说,像head标签这种不可见的元素,或者那些被设置了display: none样式的元素,它们存在于Dom树中,但就不会被加入到渲染树里。

本质上,浏览器扮演的是一个客户端的角色。当你想浏览一个网页时,其实是你的浏览器先向对应的服务器发送一个二进制的请求。服务器在解析了这个请求之后,同样会以二进制数据的形式把内容反馈给你的浏览器,然后浏览器再执行像INDEX.HTM这样的文件,把最终的页面呈现给你。

当渲染树准备好了,浏览器就要对它进行布局操作了。这个过程也被称为“layout”或者“reflow”。在这一步,浏览器会计算每个元素精确的坐标和大小,还要确定它们是否换行,以及position、overflow、z-index等很多其他样式属性,为最后的绘制做准备。

布局完成之后,就到了最后一步——绘制渲染树。浏览器会调用操作系统的底层API,把页面上的所有内容真实地画在屏幕上,这样我们就能看到完整的网页了。

浏览器的工作可以说是从解析HTML文档开始的。它会构建一个叫做Dom树的结构,也就是文档对象模型。这个Dom树是W3C组织推荐的标准编程接口,专门用来处理像HTML这样的可扩展置标语言。