Получите оповещение, когда внешний JavaScript сделан - PullRequest
1 голос
/ 06 ноября 2011

Я загружаю скрипт из кнопки Google Plus только тогда, когда пользователь запрашивает его.Используемый код выглядит следующим образом:

    var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;
    po.src = 'https://apis.google.com/js/plusone.js';
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);

Когда я запускаю этот скрипт, он заменяет заполнитель на кнопку Google Plus.Заполнитель выглядит следующим образом:

<g:plusone size="tall" annotation="none"></g:plusone>

Есть несколько других кнопок, которые я загружаю таким образом, только при необходимости.

Теперь иногда кнопкам требуется некоторое время для загрузки.Есть ли способ получить предупреждение, когда все кнопки загружены.

Я могу просто отобразить загрузчик, пока он не будет полностью загружен, а затем отобразить его красиво.

Я использую jQuery как мойфреймворк javascript.

Редактировать

Для лучшего решения проверьте этот вопрос: Вызов обработчика, когда все скрипты закончили загрузку через $ .getScript

А лучшепуть использования jQueries deffered object .Я добавил небольшой пример и возился с ответом.

Ответы [ 2 ]

2 голосов
/ 06 ноября 2011

jQuery предоставляет механизм для определения обработчика загрузки скрипта:

$.getScript( 'https://apis.google.com/js/plusone.js', function () {
    // the script has loaded and executed
});

Этот обработчик вызывается после , когда скрипт выполнен, поэтому он должен соответствовать вашим потребностям ...

1 голос
/ 06 ноября 2011

Если вы хотите добавить функцию без изменения существующего контента, используйте код ниже:

(function(){
    var poller = window.setInterval(function(){//Set poller
        if($('g\\:plusone').length == 0){      // When the document doesn't have
            clearInterval(poller);             // any g:plusone elements, clear
                                               // poller, and execute your code
            //Run your code..
        }
    }, 200);  //Checks at a frequence of 200ms
})();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...