google.setOnLoadCallback 不会 work/does 不会等到加载任何内容

google.setOnLoadCallback does not work/does not wait until anything is loaded

差不多就是这样,这个调用似乎什么也没做。

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

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

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

'Uncaught TypeError: Cannot read property 'DataTable' of undefined'

错误发生在:

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

编辑:

我还应该注意,在我发现的所有示例中,调用

google.setOnLoadCallback(drawChart);

所有例子如上,去掉了函数末尾的括号'()',即

google.setOnLoadCallback(drawChart());

然而,它对我真正有效的唯一方法是使用括号,但没有人使用括号的示例。

google.setOnLoadCallback(drawChart())(带括号)根本不起作用,所以听起来有点奇怪。 setOnLoadCallback 需要它可以调用的函数的 name,而不是函数的 execution

setOnLoadCallback 是一个通用的 google 特征。它也由 google.load("jquery", "1.9.1") 等触发。可能是您代码中的某个地方由 google.load() 加载了另一个库,从而过早地触发了您的 setOnLoadCallBack

因此,为了绝对确定您的回调是在加载可视化库时实际触发的,而不是由其他东西触发的,您可以直接在 load() 上设置回调,而不是依赖 setOnLoadCallback() :

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