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 });
差不多就是这样,这个调用似乎什么也没做。
如果我在 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 });