几乎就是这样,电话似乎绝对没有。
如果我在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());
然而,它实际上对我有用的唯一方法是使用括号,但没有例子中人们包含括号。
答案 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 });