# Document

Document 接口表示任何在浏览器中载入的网页,并作为网页内容的入口,也就是 DOM 树。

# Document 类型

Document 类型是 JavaScript 中表示文档节点的类型。在浏览器中,文档对象 document 是HTMLDocument 的实例( HTMLDocument 继承 Document),表示整个HTML 页面。 document 是 window对象的属性,因此是一个全局对象。

# DOM 树

HTML 文档的主干是标签(tag)。

根据文档对象模型(DOM),每个 HTML 标签都是一个对象。嵌套的标签是闭合标签的“子标签(children)”。标签内的文本也是一个对象。

所有这些对象都可以通过 JavaScript 来访问,我们可以使用它们来修改页面。

# 自动修正

如果浏览器遇到格式不正确的 HTML,它会在形成 DOM 时自动更正它。

例如,顶级标签总是 <html>。即使它不存在于文档中 — 它也会出现在 DOM 中,因为浏览器会创建它。对于 <body> 也是一样。

在生成 DOM 时,浏览器会自动处理文档中的错误,关闭标签等。

表格是一个有趣的“特殊的例子”。按照 DOM 规范,它们必须具有 <tbody>,但 HTML 文本却(官方的)忽略了它。然后浏览器在创建 DOM 时,自动地创建了 <tbody>

# DOM 节点

不同的 DOM 节点可能有不同的属性。

每个 DOM 节点都属于相应的内建类。

层次结构(hierarchy)的根节点是 EventTarget,Node 继承自它,其他 DOM 节点继承自 Node。

# HTMLElement

HTMLDocument 接口描述了包含 HTML 的文档。注意:HTML 规范也继承了Document 接口。

一个 HTMLDocument 对象还可以访问浏览器的各种功能:例如使用 Window 接口来绘制的标签或窗口,与之关联的样式 Style(通常是 CSS),浏览器相对于上下文的历史记录 History,以及文档内的选区 Selection 等。