DocumentFragment - 表示没有父节点的最小文档对象

DocumentFragment 接口表示没有父节点的最小文档对象。它被当做一个轻量版的 Document 使用,它存储由节点组成的文档结构段,就像标准文档一样。关键的区别在于,由于文档片段不是活动文档树结构的一部分,因此对片段所做的更改不会影响文档,导致 reflow 或在进行更改时产生任何性能影响。

DocumentFragment 的一个常见用途是创建一个片段,在其中组装 DOM 子树,然后使用 Node 接口方法(例如 appendChild()insertBefore())将片段追加或插入到 DOM 中。这样做会将片段的节点移动到 DOM 中,留下一个空的 DocumentFragment 。由于所有节点一次都插入到文档中,只触发一次 reflow 和 render,而不是每个节点插入都触发一次 reflow 和 render。

该接口也非常适用于 Web 组件:<template> 元素在其 HTMLTemplateElement.content 属性中包含 DocumentFragment

可以使用 document.createDocumentFragment() 方法或构造函数创建空的 DocumentFragment

属性

该接口没有特定属性,但继承了其父级 Node 的属性,并实现了 ParentNode 接口的属性。

ParentNode.children 只读

返回一个实时 HTMLCollection,其中包含 DocumentFragment 对象的子类的 Element 类型的所有对象。

ParentNode.firstElementChild 只读

返回 Element,它是 DocumentFragment 对象的第一个子节点,如果没有则返回 null

ParentNode.lastElementChild 只读

返回 Element,它是 DocumentFragment 对象的最后一个子节点,如果没有则返回 null

ParentNode.childElementCount 只读

返回一个 unsigned long ,表示 DocumentFragment 具有的子元素数。

构造函数

DocumentFragment()

返回一个空的 DocumentFragment 对象。

方法

该接口继承其父级 Node 的方法,并实现了 ParentNode 接口的方法。

DocumentFragment.querySelector()

以文档顺序返回 DocumentFragment 中与指定选择器匹配的第一个 Element 节点。

DocumentFragment.querySelectorAll()

返回 DocumentFragment 中与指定选择器匹配的所有 Element 节点的 NodeList

DocumentFragment.getElementById()

以文档顺序返回 DocumentFragment 中与指定 ID 匹配的第一个 Element 节点。

规范

规范 状态 备注
DOM
DocumentFragment 的定义
现行的标准 增加了 ParentNode 的构造函数和实现。
Selectors API Level 1
DocumentFragment 的定义
已过时 增加了 querySelector()querySelectorAll() 方法。
Document Object Model (DOM) Level 3 Core Specification
DocumentFragment 的定义
已过时 自从 Document Object Model (DOM) Level 2 Core Specification 以来没有变化
Document Object Model (DOM) Level 2 Core Specification
DocumentFragment 的定义
已过时 自从 Document Object Model (DOM) Level 1 Specification 以来没有变化
Document Object Model (DOM) Level 1 Specification
DocumentFragment 的定义
已过时 初始定义

桌面浏览器兼容性

特性 Chrome Edge Firefox Internet Explorer Opera Safari
基础支持 1 支持 1 支持 支持 支持
DocumentFragment() constructor 28 不支持 24 不支持 15 不支持
querySelector 1 支持 3.5 8 10 3.2
querySelectorAll 1 支持 3.5 8 10 3.2
ParentNode properties 28 不支持 25 不支持 15 不支持
ParentNode methods 不支持 不支持 不支持 不支持 不支持 不支持

移动浏览器兼容性

特性 Android Chrome for Android Edge mobile Firefox for Android IE mobile Opera Android iOS Safari
基础支持 支持 支持 支持 4 未知 支持 支持
DocumentFragment() constructor 支持 支持 支持 24 未知 支持 未知
querySelector 支持 支持 支持 4 未知 10 3.2
querySelectorAll 支持 支持 支持 4 未知 10 3.2
ParentNode properties 支持 支持 不支持 25 未知 5 不支持
ParentNode methods 不支持 未知 不支持 不支持 未知 不支持 不支持