JavaScript:cloneNode 与 importNode

Man*_*ngo 1 javascript dom clonenode

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

element.appendChild(something.cloneNode(true));
element.appendChild(document.importNode(something, true));
Run Code Online (Sandbox Code Playgroud)

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

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

Alo*_*hci 5

在 DOM3 及更早版本中,importNode 用于从其他文档复制节点,cloneNode 用于在同一文档内复制。但是浏览器不强制这样做,所以在最新的DOM 标准中cloneNode 可用于从不同的文档复制。在其他上下文中使用 DOM 时,请坚持 DOM3 规则。