我有一个使用D3.js的应用程序,但我必须使它与IE8兼容......所以我使用了R2D3.js,这似乎是SVG操作的一个非常好的替代品。但对于基本标签......
我用它来管理表中的数据,但是当谈到添加新行时,IE说:
行:8450 /错误:参数无效。
我环顾四周,但我没有发现任何线索。
以下是我的代码的一个简单示例:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<!--[if lte IE 8]><script src="r2d3.js" charset="utf-8"></script><![endif]-->
<!--[if gte IE 9]><!-->
<script src="d3.min.js" charset="utf-8"></script>
<!--<![endif]-->
</head>
<body>
<table>
</table>
<script>
var dataset = [
{
name: 'Foo',
age: 42
},
{
name: 'Bar',
age: 21
}
];
var table = d3.select('table');
table.selectAll('tr').data(dataset)
.enter().append('tr')
.selectAll('td')
.data(function(d) {
return [d.name, d.age];
})
.enter().append('td')
.text(function(d) {return d});
</script>
</body>
<html>
这与Firefox完美配合,但在IE8上崩溃。
这是JSFiddle。
任何人都可以帮我吗?
谢谢。
答案 0 :(得分:0)
查看R2D3源代码,它使用的是仅从IE9开始支持的addEventListener方法:
https://github.com/mhemesath/r2d3/search?utf8=%E2%9C%93&q=addeventlistener
https://developer.mozilla.org/en-US/docs/Web/API/EventTarget.addEventListener
R2D3Element.prototype.addEventListener = function(type, listener) {
this.domNode.childNodes[i].r2d3.addEventListener(type, listener);
}
这解释了为什么它在IE8上崩溃