我想使用google api在我的网站上绘制图表。但是,我遇到了google.setOnLoadCallback
函数的问题。这是我的代码(简化):
ATTEMPT 1 :(工作正常)
<script type="text/javascript" src="https://www.google.com/jsapi"></script>
<script type="text/javascript" src="js/styling.js"></script>
<script type="text/javascript">
// Load the Visualization API and the piechart package.
google.load('visualization', '1.0', {'packages':['corechart']});
// Set a callback to run when the Google Visualization API is loaded.
google.setOnLoadCallback(helloWorld);
function helloWorld() {
alert("Hello World");
}
</script>
ATTEMPT 2 :(工作正常)
<script type="text/javascript" src="https://www.google.com/jsapi"></script>
<script type="text/javascript" src="js/styling.js"></script>
<script type="text/javascript">
// Load the Visualization API and the piechart package.
google.load('visualization', '1.0', {'packages':['corechart']});
// Set a callback to run when the Google Visualization API is loaded.
google.setOnLoadCallback(helloWorld);
</script>
在styling.js中我写道:
function helloWorld() {
alert("Hello World");
}
在这种情况下,一切正常。
然而......尝试3(失败!)
<script type="text/javascript" src="js/styling.js"></script>
在styling.js中我写道:
window.onload = function() {
// Load the Visualization API and the piechart package.
google.load('visualization', '1.0', {'packages':['corechart']});
// Set a callback to run when the Google Visualization API is loaded.
google.setOnLoadCallback(helloWorld);
}
function helloWorld() {
alert("Hello World");
}
这个不起作用。似乎根本没有调用helloWorld()
。
为什么?
答案 0 :(得分:1)
我会说setOnLoadCallback
事件根本没有被触发,因为你在已经触发了页面加载事件时定义了它的回调。
只需将google.setOnLoadCallback(helloWorld);
和function helloWorld() {...}
放在页面加载的回调上下文之外(两者都有,否则就会出现上下文问题)。