我們一直在使用Google Charts API構建應用程序。一切在我們支持的大多數瀏覽器中都能正常工作,但是IE8會引發問題。從技術上講,瀏覽器不會崩潰,圖表只是需要很長時間才能呈現瀏覽器認爲它正在崩潰並警告腳本應該停止。當我們允許腳本完成時,渲染圖表已經花費分鐘完全呈現。在Chrome,FF和IE9中,圖表即時呈現。瀏覽器之間的這種巨大差異可能表明谷歌的一個問題,但鑑於谷歌搜索這個問題並沒有出現類似的問題,我不禁認爲我們正在處理一些錯誤的事情。IE8崩潰時繪製LineChart - 所有其他瀏覽器工作
以下是我們用來生成圖表的方法,並且所有內容都掛在chart.draw
調用中。
function drawChart(data) {
var options = {
title: 'Occupancy and Volume History',
isStacked: true,
colors: ['#0066FF', '#53CF53', '#E0440E', '#E6693E', '#FF9900', '#009933'],
hAxis: { format: 'MM/dd/yyyy hh:mm:SS a',
gridlines: { color: 'transparent' }
},
vAxis: { viewWindow: { min: Number('0'),
max: Number('0.96')
},
gridlines: { color: 'transparent'}
},
pointSize: 5,
series: { 4: { pointSize: 0 },
5: { pointSize: 0 }
}
};
var chart = new google.visualization.LineChart(document.getElementById("chart_div"));
google.visualization.events.addListener(chart, 'error', function (e) {
console.log(e.message);
});
chart.draw(data, options);
}
數據正在檢索和處理,像這樣:
$.post(<path to data>,
function (data) {
// Format date to actual date object
$.each(data.rows, function (i, row) {
data.rows[i].c[0].v = new Date(row.c[0].v);
});
drawChart(data);
});
的數據的樣品被製作的服務器側,並通過上述方法,可以發現here。在數據傳遞到方法之前,日期字符串被轉換爲JavaScript Date對象。所有其他數據保持原樣。
在我們的HTML中,我們正在阻止IE兼容模式,並且我們已經驗證了瀏覽器正在考慮這一點,並且在IE8模式下呈現,我們使用HTML5文檔類型(即:DOCTYPE html
),並且正在使用一個光禿的html
元素來啓動文檔。
如果需要更多信息,我很樂意爲您提供。
編輯:以前使用的數據格式不正確。鏈接到sample data已被修改爲鏈接到仍然存在相同問題的新的更正格式。
編輯2:修復數據結構後不再使用arrayToDataTable。
編輯3:在呼叫drawChart()
之前添加檢索和處理數據。
一個巨大的問題......你爲什麼還在爲IE8開發呢?一些在線資源指出(平均而言)只有5%仍在使用IE8 ...您或您的客戶是否對IE8有特定要求? – Kinnectus
不幸的是,我們的客戶仍然在大多數機器上使用IE8。 – Dan
您可以嘗試HTML5shiv修補程序,看看您是否看到任何更好的渲染結果... - https://code.google.com/p/html5shiv/ – Kinnectus