В javascript загружен сторонний объект

Возможный дубликат:
как проверить событие загрузки элемента скрипта в браузере без 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);

}

Любая помощь приветствуется!


person fillip_dohfeel    schedule 11.12.2012    source источник
comment
Используйте событие load динамически созданного элемента <script>   -  person Bergi    schedule 11.12.2012


Ответы (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);
}
person flavian    schedule 11.12.2012
comment
@Bergi Спасибо за ответ. Буду использовать оба ваших решения - person fillip_dohfeel; 11.12.2012