当在 DOM 构建步骤中存在未关闭的标签时,标记化如何工作?



所以,在 DOM 构建步骤中,当分词器从 HTML 文档创建令牌时。它如何处理未关闭的标签?

假设我有以下 HTML

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<title>Document</title>
</head>
<body>
<h1>Hello</h1>
<div>
<h2>World</h2>
</body>
</html>

分词器将如何处理<div>

每个浏览器都有一个标准来解决这个问题吗?

是的,有一个标准。HTML5规范的第8.2节涵盖了这一点。

但这取决于未关闭的元素。有时,当遇到其他标签时,元素会自动关闭。在其他情况下,元素被关闭,然后在乱序标记之后重新打开。在其他情况下,标签可能会被完全忽略。

在您提供的特定情况下,当遇到 start 元素时,将创建div 元素并将其作为主体元素的子元素添加到 DOM 中。创建 H2 元素并成为div 元素的子元素。缺少的 closediv 标记不起作用,关闭正文和关闭 html 标记不会更改 DOM,然后解析停止。

close body 标记将指示发生了解析错误,但如果检测到解析错误,浏览器通常不会执行任何操作。

(请注意,缺少标记是树构造的问题,而不是分词器的问题。

最新更新