我注意到在一些代码样本中,有两种看似不同的方式来克隆DOM节点并将其附加到现有元素上:
element.appendChild(something.cloneNode(true));
element.appendChild(document.importNode(something, true));
这两种方法都有复制一个节点的效果。第二个版本看起来更冗长,并暗示着复制实际上首先在某个具体位置,尽管它仍然需要找到一个合适的位置。然而,MDN和其他一些网站将其用作使用template
标记的示例。其他地方则采用更简单的cloneNode
选项。
问题是:相比cloneNode
,使用importNode
有何优势?
importNode
,以避免不同的 DOM 行为问题。 - KaiidocloneNode
有何不同? - ManngoimportNode
,新文档将使克隆节点成为自己的一部分(共享其 DOM 方法和可能的命名空间等),而使用externalDocument.cloneNode()
,克隆节点仍将具有externalDocument
的 API。 - KaiidoimportNode
还可以从不同的文档克隆。然而,现在我可以选择任何一个?你能把它转化成一个答案,这样我就可以接受它了吗? - Manngo