HighCharts.js не отображает диаграмму под IE8 - PullRequest
9 голосов
/ 09 января 2012

Я использую HighCharts вместе с Python для динамического создания диаграмм.Все работает нормально, однако я получаю исключение cannot read property "0" of undefined под IE8.К сожалению, мой клиент хочет, чтобы он работал и под 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.Есть идеи как это исправить?

1 Ответ

18 голосов
/ 09 января 2012

Эти висячие запятые вызывают ошибки в Internet Explorer. Избавься от них.

Вот пример:

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

Internet Explorer считает ошибку в конце литерала объекта, подобного этому, ошибкой. На самом деле вы должны видеть предупреждение «Ошибки на странице», но обычно это ошибка, которая не указывает на настоящую причину.

edit & mdash; ну, очевидно, IE8 не требователен к этому, хотя IE7 есть.

изменить еще раз & mdash; Однако , IE8 интерпретирует последнюю висячую запятую в ваших массивах данных как означающую, что должен быть дополнительный элемент! Другими словами:

 [1, 2, 3,].length

- 3 в Firefox / Chrome / Safari, но 4 в Internet Explorer. Когда вы пытаетесь получить доступ к этому элементу, браузер выдает undefined.

...