JavaScript:cloneNode 与 importNode
JavaScript: cloneNode vs importNode
我在一些代码示例中注意到克隆 DOM 节点并将其附加到现有元素的看似不同的方法:
element.appendChild(something.cloneNode(true));
element.appendChild(document.importNode(something, true));
两者都有复制节点的作用。第二个版本似乎更冗长,并暗示该副本实际上首先在某个具体的地方,尽管它仍然需要找到一个合适的家。但是,它被 MDN 和其他一些人用作使用 template
标签的说明。在其他地方,他们选择更简单的 clodeNode
选项。
问题是:使用 importNode
比 cloneNode
有什么好处?
在 DOM3 及更早版本中,importNode 用于从其他文档复制节点,cloneNode 用于在同一文档内复制。但浏览器并不强制执行,因此在最新的 DOM standard 中,cloneNode 可用于从不同的文档进行复制。在其他情况下使用 DOM 时,请遵守 DOM3 规则。
我在一些代码示例中注意到克隆 DOM 节点并将其附加到现有元素的看似不同的方法:
element.appendChild(something.cloneNode(true));
element.appendChild(document.importNode(something, true));
两者都有复制节点的作用。第二个版本似乎更冗长,并暗示该副本实际上首先在某个具体的地方,尽管它仍然需要找到一个合适的家。但是,它被 MDN 和其他一些人用作使用 template
标签的说明。在其他地方,他们选择更简单的 clodeNode
选项。
问题是:使用 importNode
比 cloneNode
有什么好处?
在 DOM3 及更早版本中,importNode 用于从其他文档复制节点,cloneNode 用于在同一文档内复制。但浏览器并不强制执行,因此在最新的 DOM standard 中,cloneNode 可用于从不同的文档进行复制。在其他情况下使用 DOM 时,请遵守 DOM3 规则。