因此Google图表在除Safari之外的所有其他浏览器中都能正常运行。
首先,Safari无法通过以下代码加载API:<script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
我必须按照此代码加载图表:<script src="https://www.google.com/jsapi?autoload={'modules':[{'name':'visualization','version':'1.1','packages':['corechart']}]}"></script>
。这段代码工作,但我不知道什么是这个好的解决方案。是好还是不好?
图表最终在Safari中展示后,他只是空着。我所放入的所有数据都没有显示出来。我的图表功能(点击触发):
google.charts.load('current', {'packages':['corechart']});
function showChart(id,obj,dataname,datatype,start,end){
$.ajax({
type: "POST",
url: path_to+"ajax.php",
data: {
's': start,
'e': end,
'title': id,
'p': datatype,
'f': 'crt'
},
dataType: "json",
success: function(data){
if(Object.keys(data).length){
var chda = new google.visualization.DataTable();
chda.addColumn('datetime', 'Время');
chda.addColumn('number', dataname);
for(i in data) chda.addRow([new Date(data[i]['date']+' '+data[i]['datetime']),parseInt(data[i][datatype])]);
var options = {
title: obj+': '+dataname,
vAxis: {minValue: 0},
backgroundColor: '#123',
areaOpacity: 0.5,
theme: 'maximized',
hAxis: {
viewWindowMode: 'explicit',
title: '',
titleTextStyle: {color: '#333'},
gridlines: {
count: -1,
units: {
days: {format: ['MMM dd']},
hours: {format: ['HH:mm', 'ha']},
}
},
minorGridlines: {
units: {
hours: {format: ['HH:mm', 'ha']},
minutes: {format: ['HH:mm a Z', ':mm']}
}
}
}
};
var chart = new google.visualization.AreaChart(document.getElementById('chart_div'));
chart.draw(chda, options);
}
}
});
}
控制台中没有错误,数据确实存在(通过警报测试),但Safari不会将数据放入图表中。我该如何跟踪和解决这个问题? 抱歉我的英语,而不是我的母语。
答案 0 :(得分:2)
在safari上javascript日期类不支持&#34; yyyy-mm-dd H:M:S&#34;格式。你必须删除&#34; H:M:S&#34;当你在Date类中传递它时。相反,你可以追加&#34; H:M:S&#34;从Date类获取日期后的日期字符串中。
答案 1 :(得分:0)
我终于解决了我的问题。谷歌图表在Safari中使用1.30版本的jsapi库。这意味着您需要放置此引导代码:<script src="https://www.google.com/jsapi?autoload={'modules':[{'name':'visualization','version':'1.30','packages':['corechart']}]}"></script>
。
它会产生一些不同,例如像iframe这样的1.30版本图表加载,这可能会产生另一些问题。