google.setOnLoadCallback不起作用/不等到加载任何内容

时间:2015-06-24 20:16:53

标签: javascript asp.net google-chrome google-visualization

几乎就是这样,电话似乎绝对没有。

如果我在Chrome中调试页面,请在调用

后立即设置断点
google.load('visualization', '1.0', { packages: ['corechart', 'bar', 'table'] });

然后等待5-10秒加载完成,然后继续,没关系。否则,如果我让'setOnLoadCallback'尝试做它的事情,它会抛出

  

'未捕获的TypeError:无法读取属性' DataTable'未定义'

引发错误:

var data = new google.visualization.DataTable();

编辑:

我还应该注意,在我调用的所有例子中,

google.setOnLoadCallback(drawChart);

所有示例均如上所述,不包括括号'()'在功能结束时,即

google.setOnLoadCallback(drawChart());

然而,它实际上对我有用的唯一方法是使用括号,但没有例子中人们包含括号。

1 个答案:

答案 0 :(得分:10)

google.setOnLoadCallback(drawChart())(带有paranthesis)根本不应该工作,所以听起来有点奇怪。 setOnLoadCallback期望它可以调用的函数的 name ,而不是函数的 execution

setOnLoadCallback是Google的常规功能。它也是由google.load("jquery", "1.9.1")等触发的。可能是您的代码中某个地方的另一个库由google.load()加载并且过早地触发您的setOnLoadCallBack

因此,要确保在加载可视化库时实际触发回调,而不是通过其他内容触发回调,您可以直接在load()上设置回调,而不是依赖setOnLoadCallback():< / p>

google.load('visualization', '1.0', 
     { packages: ['corechart', 'bar', 'table'], callback: drawChart });