文档:importNode() 方法
Document 对象的 importNode() 方法用于从另一个文档创建一个 Node 或 DocumentFragment 的副本,以便稍后插入到当前文档中。
导入的节点尚未包含在文档树中。要包含它,您需要调用一个插入方法,例如 appendChild() 或 insertBefore(),并传入一个当前在文档树中的节点。
与 document.adoptNode() 不同,原始节点不会从其原始文档中移除。导入的节点是原始节点的克隆。
语法
js
importNode(externalNode)
importNode(externalNode, deep)
参数
externalNode-
要导入到当前文档中的外部
Node或DocumentFragment。 deep可选-
一个布尔标志,其默认值为
false,用于控制是否将externalNode的整个 DOM 子树包含在导入中。- 如果
deep设置为true,则会复制externalNode及其所有后代节点。 - 如果
deep设置为false,则只导入externalNode——新节点没有子节点。
- 如果
返回值
导入文档作用域中复制的 importedNode。
注意: importedNode 的 Node.parentNode 为 null,因为它尚未被插入到文档树中!
示例
js
const iframe = document.querySelector("iframe");
const oldNode = iframe.contentWindow.document.getElementById("myNode");
const newNode = document.importNode(oldNode, true);
document.getElementById("container").appendChild(newNode);
注意
在将外部文档的节点插入到当前文档之前,它们应该被
- 使用
document.importNode()克隆;或者 - 使用
document.adoptNode()采用。
注意: 尽管 Firefox 目前没有强制执行此规则,但为了提高未来兼容性,我们建议您遵守此规则。
有关 Node.ownerDocument 问题的更多信息,请参阅 W3C DOM FAQ。
规范
| 规范 |
|---|
| DOM # ref-for-dom-document-importnode① |
浏览器兼容性
加载中…
另见
document.adoptNode(),其行为与此方法非常相似Node.appendChild()Node.insertBefore()