在追加' tr'时使用R2D3.js的IE8中的参数无效标签

时间:2015-02-04 17:22:04

标签: internet-explorer d3.js internet-explorer-8 invalid-argument

我有一个使用D3.js的应用程序,但我必须使它与IE8兼容......所以我使用了R2D3.js,这似乎是SV​​G操作的一个非常好的替代品。但对于基本标签......

我用它来管理表中的数据,但是当谈到添加新行时,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

任何人都可以帮我吗?

谢谢。

1 个答案:

答案 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上崩溃