SVG';g';IE8中的元素抛出错误(使用r2d3、d3.图表)
我试图在IE8中使用它来绘制一个多系列的线形图 在IE8的页面加载中,我得到以下错误:SVG';g';IE8中的元素抛出错误(使用r2d3、d3.图表),svg,internet-explorer-8,d3.js,Svg,Internet Explorer 8,D3.js,我试图在IE8中使用它来绘制一个多系列的线形图 在IE8的页面加载中,我得到以下错误: TypeError:无法获取未定义或空引用未定义的属性“attr” 由以下d3代码触发: chart.areas.grid = chart.base.append('g') .classed('grid', true) .attr('width', chart.margins.left - chart.margins.right) .attr('height', chart.h - chart.m
TypeError:无法获取未定义或空引用未定义的属性“attr”
由以下d3代码触发:
chart.areas.grid = chart.base.append('g')
.classed('grid', true)
.attr('width', chart.margins.left - chart.margins.right)
.attr('height', chart.h - chart.margins.bottom - chart.margins.top)
.attr('transform', 'translate(' + chart.margins.left + ',0)');
如果我用其他元素替换“g”元素,代码将继续到下一个“g”元素并抛出相同的错误
考虑到其他人已经成功地将IE8中的“g”元素与r2d3结合使用,我不知道是什么导致了这种情况
我还使用了相对较新的框架,它刚刚开始提供IE8支持。然而,这似乎不太可能导致问题,因为触发问题的代码是纯d3 如果使用显式名称空间:chart.base.append('svg:g'),会发生什么情况?感谢您的建议-不幸的是,我仍然收到相同的错误。我能够解决这个问题的唯一方法是将所有svg g元素更改为svg:矩形,并带有fill:none和stroke:none。在进一步挖掘之后,似乎只有在指定“width”和“height”属性时才会触发错误。其他属性如“transform”或“fill”可以毫无错误地应用。我现在已经解决了这个问题,在css中为“g”元素指定宽度和高度,而不是使用d3 attr方法。虽然不理想,但效果很好。元素没有明确的宽度和高度(g的边界框是从子元素派生的)。我想IE会把这当作一个错误,而不是忽略它。