Google图表不会在Safari浏览器中显示图表

时间:2016-08-11 15:03:12

标签: javascript charts safari google-api google-visualization

因此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不会将数据放入图表中。我该如何跟踪和解决这个问题? 抱歉我的英语,而不是我的母语。

2 个答案:

答案 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版本图表加载,这可能会产生另一些问题。