我正在使用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);
。变量dataT1
和dataT2
的格式很好,因为它适用于所有其他浏览器。例如,dataT1
可能如下所示:
dataT1 = [ [1325721600000,1.64],
[1325635200000,1.64],
[1325548800000,1.7],
[1325462400000,1.7],];
但仍然在IE8下抛出异常。任何想法如何解决这个问题?
答案 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
。