Document: 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 常见问题解答。
规范
规范 |
---|
DOM 标准 # ref-for-dom-document-importnode① |
浏览器兼容性
BCD 表格仅在浏览器中加载