d3.js赢了'不能在shadowDOM中工作
d3.js won't work in a shadowDOM
我正在构建一个利用d3.js
进行数据可视化的工具。该工具依赖于webcomponentss和shadowDOM。CCD_ 2不能仅通过CCD_ 3来选择shadowDOM中的任何节点。有没有办法让d3
在shadowdom
中工作,或者我错过了一些明显的东西?
详细信息:
d3.select("#insideShadowDom")
如果您有类似的东西,则不会返回/选择任何东西
<web-component>
#document-fragment
<div id="insideShadowDom"></div>
</web-component>
澄清一下:shadowDOM
是由一个框架生成的。我找到了一种方法来获得最初的shadowRoot
(注入)。然而,我仍然想知道是否可以告诉d3
关于shadowDOM
,即使我没有createShadowRoot()
返回的句柄。
您可以传入对象——如果需要从回调引用对象,也可以使用var:
<polymer-element name="my-element">
<template>
<div id="foobar"></div>
</template>
<script>
Polymer('my-element', {
ready: function() {
var foobar = this.$.foobar;
someCallback(function() {
d3.select(foobar).
...
});
...
}
});
</script>
</polymer-element>
虽然DOM选择器不能跨DOM工作,但您可以通过.webkitShadowRoot
属性访问影子根(至少在Chrome中)。将其传递给d3.select()
,然后可以像往常一样选择shadow DOM中的任何元素。
在这里演示。
我知道这是旧的,但是,使用最新的Polymer版本(1.0.0),您可以使用访问shadow-dom元素
<template> ... <div id="elementId"></div> ... </template>
Polymer({
ready: function() { var svg = d3.select(this.$.elementId).append('svg'; }
});
这将允许您渲染图表并适当地选择shadow-dom元素。
相关文章:
- Javascript:selenium Web驱动程序isDisplayed()不工作
- jQuery UI自动完成突然停止工作
- AngularJS UI路由器不能像ng路由器那样工作
- HTML5音频加载和播放获胜'我不能在iPad上工作
- JavaScript打印功能使日历停止工作
- Javascript.getHours()工作不正常
- 为什么这在IE中的工作方式与在Firefox中不同
- 视频HTML没有'无法在Internet Explorer 11上工作
- 扩展移相器按钮类不工作
- Firebase迁移-简单的Firebase.set没有'不再工作了——旧的还是新的
- 谷歌地图不是以HTML显示,而是在JS Fiddle上工作
- 正在尝试使用if和else添加类,但无法正常工作
- Jquery FadeIn FadeOut 只工作一次
- Foreach无法在Typescript中工作
- 另一个ajax调用中的Jquery ajax调用在for循环中没有按预期工作
- 为什么不是't窗口.恢复正常工作吗?(javascript/jquery)
- JS可以在Chrome中工作,但不能在Firefox中工作
- ajaxToolkit PopupControlExtender不工作.过时的
- HTML标记在脚本标记中工作
- d3.js赢了'不能在shadowDOM中工作