【发布时间】:2013-12-31 17:09:24
【问题描述】:
我正在构建一个利用 d3.js 进行数据可视化的工具。该工具依赖于 webcomponentss 和 shadowDOM。 d3.js 不能仅通过 d3.select 选择 shadowDOM 中的任何节点。有没有办法让d3 在shadowdom 内部工作,还是我遗漏了一些明显的东西?
详细说明:
d3.select("#insideShadowDom")
只要你有类似的东西,就不会返回/选择任何东西
<web-component>
#document-fragment
<div id="insideShadowDom"></div>
</web-component>
澄清一下:shadowDOM 是由框架生成的。我找到了一种获取初始shadowRoot(注入)的方法。但是我仍然想知道是否可以告诉d3 关于shadowDOM,即使我没有createShadowRoot() 返回的句柄。
【问题讨论】:
-
你能发一个例子吗?我对 shadow DOM 没有任何经验,但据我所知,原则上你应该能够使用 D3。
-
如果我理解正确,你不能跨越 DOM 边界,即你选择的东西必须在正确的 DOM 中。所以像
elementInShadowDom.select("#insideShadowDom")这样的代码应该可以工作。 -
我在 d3 根对象上调用 select 并且它肯定不会返回任何内容,但我会再次检查。您建议在 dom 元素本身上调用 select ?
-
是的——比如
var foo = d3.select("...").append("..."); foo.select("...")。 -
不,这不会为 d3 打开 shadowDOM
标签: javascript d3.js dart angular-dart shadow-dom