Выполните мой скрипт jQuery после того, как динамически вставленная библиотека jQuery закончила загрузку - PullRequest
3 голосов
/ 14 января 2012

Я динамически вставляю библиотеку jQuery на страницу с помощью тега <script>:

jq = document.createElement('script');
jq.setAttribute('src','//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js');
b.appendChild(jq);

Затем у меня есть сценарий jQuery, который необходимо запустить после завершения загрузки библиотеки jQuery и готовности к использованию.:

$(f).load(function() {
    $(f).fadein(1000);
});

Как заставить его ждать загрузки jQuery?

1 Ответ

14 голосов
/ 14 января 2012

Укажите событие onload в теге сценария для вставки:

function onLoad() {
    $(f).load(function() {
        $(f).fadein(1000);
    });
}

jq = document.createElement('script');
jq.onload = onLoad;   // <-- The magic
jq.src = '//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js';
b.appendChild(jq);

Альтернативный способ, если вы не можете контролировать код вставки скрипта, вы можете использовать опросчик:

(function() {
    function onLoad() { ... } // Code to be run

    if ('jQuery' in window) onLoad();
    else {
        var t = setInterval(function() { // Run poller
            if ('jQuery' in window) {
                onLoad();
                clearInterval(t);        // Stop poller
            }
        }, 50);
    }
})();
...