动态地将自定义类添加到dc.selectMenu; IE11将其删除

时间:2018-08-09 15:19:07

标签: css d3.js internet-explorer-11 dc.js

在将自定义css类动态添加到dc.selectMenu时,IE11会在应用过滤器时将其踢出。现在,我使用renderlet将它们再次推入。由于增加了填充或宽度/高度,这会导致“毛刺” /移动内容。

您可以通过在我的block的选择框中选择一个选项来重现该问题。

这是一个错误吗?有谁知道更清洁的解决方法而不导致这些故障出现?

1 个答案:

答案 0 :(得分:1)

我们发现IE11实际上是crashes on Win8 if you try to update a selectMenu!因此,在该浏览器上we only render, don't attempt to redraw选择菜单。

这就是为什么您需要重新应用它。

在尝试这一点时,我发现仅移动就足够了

.on('renderlet', ...

可以归为selectMenu所在的地方(因为它正在修改该小部件)。我认为这是可行的,因为选择菜单不使用任何过渡,并且没有延迟。

不过,更一般而言,在任何现代版本的dc.js中,您都应该真正使用pretransition事件,该事件在任何转换之前触发。总而言之:

selectMenu.on('pretransition', function(chart){
    selectMenu.select('select').classed('uk-select', true);
});

尽管这是一个很酷的词,renderlet很少是正确的事件。您会在很多示例中看​​到它,因为它可以追溯到dc.js的早期版本,但是它在所有转换完成之后才发生。

如果您使用pretransition,则有机会在浏览器甚至没有刷新之前就进行更改。