6

今日は Google チャートに問題があったため、js ファイルを読み込めない場合は正常に失敗するようにしています。以下はうまくいきます:

<script type="text/javascript" src="https://www.google.com/jsapi?autoload=%7B%22modules%22%3A%5B%7B%22name%22%3A%22visualization%22%2C%22version%22%3A%221.0%22%2C%22packages%22%3A%5B%22corechart%22%5D%7D%5D%7D"></script>

問題は、スクリプトがタイムアウトするのを待っているため、他のコードの実行がブロックされることです。

以下のコードがロードされ、

<script type="text/javascript">
$.ajax({
    url: 'https://www.google.com/jsapi?autoload=%7B%22modules%22%3A%5B%7B%22name%22%3A%22visualization%22%2C%22version%22%3A%221.0%22%2C%22packages%22%3A%5B%22corechart%22%5D%7D%5D%7D',
    dataType: 'script',
    cache: true, // otherwise will get fresh copy every page load
    success: function() {
      google.load("visualization", "1", {packages:["corechart"]}); 
    }
});
</script>

しかし、次のような視覚化を使用しようとするとエラーになります

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

私がやっていることは可能ですか、それとも Google に問題がある場合、js ファイルがタイムアウトして先に進むのを待つ必要があるという問題に固執していますか?

ありがとう!

4

2 に答える 2

5

google.load成功時に関数を呼び出しているため、?autoload=...冗長です。

URL を に変更し、呼び出しに//www.google.com/jsapia を追加して、完了時にコードが呼び出されるようにします。'callback'loaddrawChartcorechart

ここに JSFiddle とコード スニペットがあります: http://jsfiddle.net/c56pC/2/

<script type="text/javascript">
$.ajax({
    url: '//www.google.com/jsapi',
    dataType: 'script',
    cache: true,
    success: function() {
        google.load('visualization', '1', {
            'packages': ['corechart'],
            'callback': drawChart
        });
    }
});
</script>
于 2013-10-02T21:49:57.097 に答える