0

重複の可能性:
jquery を使用せずにブラウザー全体でスクリプト要素の読み込みイベントを確認する方法

誰かのためにグラフを生成するページを書いています。Google Charts API を使用しています。

API を動的にロードしたい。「google」グローバル オブジェクトに問題があります。宣言されているかどうかをどのように検出できますか? それが私自身のスクリプトであれば、コールバックを使用できると思います。現在私は持っています:

var addScript = function(src){
    var head= document.getElementsByTagName('head')[0];
    var script= document.createElement('script');
    script.type= 'text/javascript';
    script.src= src;
    head.appendChild(script);
}

var init = function (){           

    addScript('https://www.google.com/jsapi');

    var waitForScript = setInterval(function(){

        if(window['google']!==undefined){
            window.clearInterval(waitForScript);
            google.load('visualization', '1.0', {
                'packages':['corechart']
            });


        }

    },50);

}

どんな助けでも大歓迎です!

4

1 に答える 1

1

プロパティの存在は常に true に自動キャストされるため、次のようにするだけで十分です。

if (window['google']) {
//do stuff
};

headまた、Opera では常にタグがあるとは限りません。したがって、次のようにスクリプトを追加します。

var addScript = function(src){
    var script= document.createElement('script');
    script.type= 'text/javascript';
    script.src= src;
    (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(script);
}
于 2012-12-11T11:21:29.453 に答える