页面加载后加载Google Visualization API

时间:2013-02-19 16:35:17

标签: jquery google-visualization

我正在使用Google Visualization API在页面上创建表格。这些表从查询中获取数据,这需要花费大量时间。由于Google Visualization的默认行为是调用API在标题中绘制图表,因此会减慢页面加载时间。

我想用临时“加载”图像加载页面,然后在页面完全加载后执行脚本,以使页面感觉更具响应性。有没有办法做到这一点?

我尝试使用jQuery(window).load,但这不起作用。

**更新:对表格进行分页看起来像是这个问题的临时解决方案(例如table.draw(data,{page:'enable',pageSize:100})),它肯定不是稳定的解决方案但它是什么,问题是它解决了表的问题而不是图表,所以我将继续我的更新

2 个答案:

答案 0 :(得分:0)

使用&#39; loading&#39;创建<div>元素。图表位于<div>之上的图片。在页面加载时显示此图片(将在您启动页面时显示&#39; loading&#39;默认值。)

使用表格图表的ready event,您可以创建一个在表格准备就绪时将触发的侦听器。在这种情况下,您创建一个隐藏“加载”功能的功能。使用CSS图像<div>,因此它不再显示。

查看示例here。代码如下:

google.load('visualization', '1', {packages: ['table']});
google.setOnLoadCallback(drawVisualization);

function drawVisualization() {
    var dataTable = new google.visualization.DataTable();
    dataTable.addColumn('string', 'Label');
    dataTable.addColumn('number', 'foo');
    dataTable.addColumn('number', 'bar');
    dataTable.addColumn('number', 'caz');
    dataTable.addColumn('number', 'cad');
    for (var i = 0; i < 500; ++i) {
        dataTable.addRow(['Label ' + i, Math.random()*100, Math.random()*100, Math.random()*100, Math.random()*100])
    }

    var table1 = new google.visualization.Table(document.getElementById('table'));

    google.visualization.events.addListener(table1, 'ready', function() {
        document.getElementById('loading').style.display='none';
        alert("Chart is Ready!");
    });

    table1.draw(dataTable, null);


}

答案 1 :(得分:0)

解决方案很简单。将您的图表呈现功能称为google.load中的回调。

例如,更改此内容:

  $(document).ready(function() {
      google.load("visualization", "1", {packages:["corechart"]});
  });

对此:

  $(document).ready(function() {
     google.load("visualization", "1", {packages:["corechart"],"callback":chartRender});
  });