【问题标题】:javascript has 3rd party object loaded [duplicate]javascript已加载第3方对象[重复]
【发布时间】:2012-12-11 19:43:40
【问题描述】:

可能重复:
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);

}

任何帮助将不胜感激!

【问题讨论】:

标签: javascript setinterval loaded


【解决方案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);
}

【讨论】:

  • @Bergi 感谢您的回复。将使用您的两种解决方案
猜你喜欢
  • 2011-03-20
  • 2015-09-18
  • 1970-01-01
  • 1970-01-01
  • 2021-01-25
  • 2016-12-04
  • 1970-01-01
  • 2012-08-27
  • 2021-07-06
相关资源
最近更新 更多