【发布时间】:2015-01-26 00:20:27
【问题描述】:
我正在尝试克隆影子根,以便可以将<content></content> 的实例与其对应的分布式节点交换。
我的做法:
var shadowHost = document.createElement('div');
var shadowRoot = shadowHost.createShadowRoot();
var clonedShadowRoot = shadowRoot.cloneNode(true);
不起作用,因为“ShadowRoot 节点不可克隆。”
这样做的动机是我希望检索组合的影子树,以便我可以使用呈现的 HTML 标记。
由于 Shadow DOM 的性质,这可能不起作用,对分布式节点的引用可能会被克隆过程破坏。
编写影子树很可能是本机功能,但在搜索了 w3c 规范后,我找不到这样的方法。
有这样的原生方法吗?或者,如果做不到这一点,手动遍历(在过程中复制树)会起作用吗?
【问题讨论】:
-
标准中缺乏支持让我失望。它以某种方式解决,我相信通过遍历和复制结构,而不是通过简单的克隆。如果你要分享一个要点,我会看看。否则也许尝试联系 ecma 规范设计人员?
-
我不明白你为什么要这样做。你有什么例子可以提供吗?使用
shadowRoot.innerHTML是一个选项吗? -
我想你可以把 innerHTML 分配给一个元素,然后像往常一样遍历它。我还没有必要重新审视这个
标签: javascript html dom clone shadow-dom