什么是 DOM?DOM树如何生成的?

DOM是页面的基础数据结构,提供JS操作接口。HTML解析器将字节流转化为DOM树,过程中遇到script标签会暂停解析执行JS,影响DOM生成。JS可以修改DOM结构,内嵌或引入的JS都会在执行后继续DOM解析。
摘要由CSDN通过智能技术生成

什么是 DOM

文档对象模型(Document Object Model)。它提供了对文档结构化的描述,并将HTML页面与脚本、程序语言联系起来。
在渲染引擎中,DOM有以下几个层面的作用:

  • 从页面来看,DOM就是生成页面的基本数据结构
  • 从JS脚本来看,DOM提供给JS脚本操作的接口,利用该接口,JS就能对DOM结构进行访问,以此来改变文档的结构、样式以及内容。
  • 有时,DOM就像一个安全防护栏,某些不安全的内容在DOM的解析阶段就会拦截。

DOM树如何生成

HTML 解析器(HTMLParser): 负责将 HTML 字节流转换为 DOM 结构。
关于HTML解析器是如何拿到网络进程的数据的呢?
在这里插入图片描述
由此可见,网络进程和渲染进程之间是有一个共享的数据通道,网络进程加载了多少数据,就会将数据传给HTML解析器进程解析,HTML解析器接收到数据之后,这些数据(字节流)将转化成DOM,相关过程如下:
在这里插入图片描述
有以下三个阶段:

  1. 通过分词器将字节流转化为Token(也就是一个片段),分为Tag Token和文本Token
  2. Token解析成DOM节点
  3. 再将DOM节点添加到DOM树中。

有三个阶段:

1、通过分词器将字节流转化为Token。 分词器先将字节流转换为一个个 Token,分为 Tag Token 和文本 Token。

注意,这里的Token并不是我们之前理解的Token,这里就是一个片段。

2、Token解析为DOM节点。

3、将 DOM节点添加到DOM树中。

JavaScript影响DOM的生成

JS可以修改DOM,也会影响DOM的生成。

  1. 内嵌的JS脚本(嵌入一段script标签的代码),前面的解析过程都是一样的,但解析到script标签时,渲染引擎会判断这是一段脚本,此时HTML解析器就会暂停对DOM的解析,因为JS可能要修改当前已生成的DOM结构,暂停解析后,JS引擎介入并执行script标签中的这段脚本,脚本执行完成之后又,HTML解析器恢复解析过程,将会继续解析后续的内容,直到生成最终的DOM。
  2. 引入JS文件和之前大体一致,区别在于暂停解析之后执行JS代码,会先下载这段js代码。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值