JavaScript:cloneNode 与 importNode

JavaScript: cloneNode vs importNode

我在一些代码示例中注意到克隆 DOM 节点并将其附加到现有元素的看似不同的方法:

element.appendChild(something.cloneNode(true));
element.appendChild(document.importNode(something, true));

两者都有复制节点的作用。第二个版本似乎更冗长,并暗示该副本实际上首先在某个具体的地方,尽管它仍然需要找到一个合适的家。但是,它被 MDN 和其他一些人用作使用 template 标签的说明。在其他地方,他们选择更简单的 clodeNode 选项。

问题是:使用 importNodecloneNode 有什么好处?

在 DOM3 及更早版本中,importNode 用于从其他文档复制节点,cloneNode 用于在同一文档内复制。但浏览器并不强制执行,因此在最新的 DOM standard 中,cloneNode 可用于从不同的文档进行复制。在其他情况下使用 DOM 时,请遵守 DOM3 规则。