javascript已加载第三方对象

时间:2012-12-11 11:11:11

标签: javascript setinterval loaded

  

可能重复:
  how to check the script element load event accross browser without 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);

}

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:1)

属性的存在将始终自动加载为true,因此只需执行以下操作:

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

此外,在Opera中,您无法始终拥有head标记。所以你做脚本附加如下:

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);
}