在IE8下,HighCharts.js不呈现图表

时间:2012-01-09 15:40:31

标签: javascript internet-explorer internet-explorer-8 plot highcharts

我正在使用HighCharts和Python一起动态创建图表。一切正常,但我在IE8下得到cannot read property "0" of undefined例外。不幸的是,我的客户希望它也可以在IE8下工作。所以主要功能的代码是:

function generateChart(series) {
    var chart = new Highcharts.Chart({
        chart: {
            renderTo: 'company_chart',
        },
        xAxis: {
            type: "datetime",
        },
        yAxis: [{
            title: {
                text: "T1",
                },
            },{
            title: {
                text: "T2",
                },
            },
            opposite: true,
        }],
        plotOptions: {
            series: { shadow: false },
            column: { shadow: false, },
        },
        series: series
    });
);

现在我的ajax请求返回一些数据,我将它存储在变量中:

chart_data = [
    {
        type: "spline",
        color: '#ff0000',
        yAxis: 0,
        data: dataT1,
    },
    {
        type: "column",
        color: '#0000ff',
        yAxis: 1,
        data: dataT2,
    }
];

之后我拨打generateChart(chart_data);。变量dataT1dataT2的格式很好,因为它适用于所有其他浏览器。例如,dataT1可能如下所示:

dataT1 = [ [1325721600000,1.64],
           [1325635200000,1.64],
           [1325548800000,1.7],
           [1325462400000,1.7],];

但仍然在IE8下抛出异常。任何想法如何解决这个问题?

1 个答案:

答案 0 :(得分:17)

那些悬空逗号在Internet Explorer中导致错误。摆脱它们。

以下是一个例子:

    chart: {
        renderTo: 'company_chart', // <--- get rid of that comma
    },

Internet Explorer将对象文字末尾的逗号视为错误。您实际上应该看到“页面上的错误”警告,但错误通常不表示这个实际的根本原因。

编辑 - 显然IE8并不挑剔,尽管IE7是。

再次编辑 - 但是,IE8会将数据数组中最后一个悬空逗号解释为应该有一个额外的元素!换句话说:

 [1, 2, 3,].length
Firefox / Chrome / Safari中的

为3,但Internet Explorer中的 4 。当您尝试访问该元素时,浏览器会为您提供undefined