7

我想使用 google api 在我的网站上绘制图表。但是,我的google.setOnLoadCallback功能有问题。这是我的代码(简化):

尝试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>

尝试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>

在 style.js 中我写道:

function helloWorld() {
    alert("Hello World");
}

在这种情况下,一切正常。

然而......尝试3(失败!)

<script type="text/javascript" src="js/styling.js"></script>

在 style.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()根本没有调用。

为什么?

4

1 回答 1

1

我会说该setOnLoadCallback事件根本没有被触发,因为当页面加载事件已经被触发时,您正在定义它的回调。

只需将页面加载的回调上下文保持在外部(两者都有,否则您会遇到上下文问题)google.setOnLoadCallback(helloWorld);function helloWorld() {...}

于 2013-12-01T21:29:34.547 回答