document.importNode

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.

将外部文档的一个节点拷贝一份,然后可以把这个拷贝的节点插入到当前文档中。

语法

js
importNode(externalNode)
importNode(externalNode, deep)
externalNode

导入当前文档的外部 NodeDocumentFragment

deep 可选

一个布尔值,默认为 false。表明是否要导入 externalNode 的整个 DOM 子树。

  • deep 设置为 true,则拷贝 externalNode 和它的所有后代。
  • deep 设置为 false,则仅拷贝 externalNode——新的节点没有后代。

示例

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()导入源节点,想要了解更多的 Node.ownerDocument 问题,请参考 W3C DOM FAQ.

即使你不执行导入动作,就执行插入外部文档中的节点.Firefox 目前也不会报错 (如果严格按标准执行,很多已有的网站都无法正常运行). 我们鼓励开发者严格按标准修改自己已有的不符合上述标准的代码。

浏览器兼容性

BCD tables only load in the browser

规范

参见