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

此外,在 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);
}
于 2012-12-11T11:21:29.453 回答