首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >浏览器是如何在DOM树中的</body>标记之前构建呈现树的?

浏览器是如何在DOM树中的</body>标记之前构建呈现树的?
EN

Stack Overflow用户
提问于 2019-04-23 22:16:05
回答 1查看 448关注 0票数 1

我正在研究网页浏览器是如何工作的。

我理解如下,

  • 一旦HTML资源到达,浏览器就会解析HTML并构建DOM树。
  • 当它遇到用于CSS导入的link元素时,它将停止构建DOM树和构建CSSOM树。
  • 在构建CSSOM树之后,就生成DOM树。
  • 将这些合并后,将生成呈现树。

但是由于DOM构造在满足<script>时停止,所以我们将<script>放在</body>之前,以便在JS加载之前完成呈现树的构建。

但这不意味着</body>还没有在DOM树中吗?我看到的文章向我解释说,我们可以完成渲染,而无需等待<script>正在做什么。我认为如果是这样的话,则生成呈现树而不需要等待完整的DOM树,而只是CSSOM树。因为浏览器可以在解析</body>之前浏览。

或者它是否认识到唯一的左元素是</body>,而忽略它呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-27 03:02:41

你的理解有点过头了,但我会集中讨论重点。

首先,DOM不包含单独的开始和结束元素或标记。这对标记{<body>,</body>}创建一个名为body的元素。类似地,对标记{<span>,</span>}创建一个名为span的元素。

解析器一遇到开始标记,就会创建元素并将其添加到DOM中。如果解析暂停,则可以呈现到此点之前创建的整个DOM --假设当时没有呈现阻塞获取。

至于结束标记,它们主要用于标识元素的结束位置,这样标记中的下一个元素或文本就不会作为刚刚结束的元素的子元素添加。

然而,</body>是一个特例。如果解析器在</body>标记之后遇到标记或文本,解析器将通过将元素和文本作为body元素的子元素来“修复”DOM。这并不是说解析器完全忽略</body>标记--如果注释节点紧跟在</body>标记后面,它将作为html元素的子元素而不是主体元素添加。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55820125

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档