Асинхронная загрузка JavaScript выдает ошибки при запуске с использованием jQuery - PullRequest
0 голосов
/ 18 января 2012

Я использовал написанное здесь руководство: http://stevesouders.com/tests/jsorder.php,, которое дает следующую схему загрузки файлов JS асинхронно:

var sNew = document.createElement("script");
sNew.type = "text/javascript";
sNew.async = true;
sNew.src = "http://yourdomain.com/main.js";
var s0 = document.getElementsByTagName('script')[0];
s0.parentNode.insertBefore(sNew, s0);

Я использовал это для загрузки дополнительных файлов плагинов jQuery.

Таким образом, структура страницы становится следующей:

<html><head>

    //meta-tags, css-files loading...
    array of JS files for async load (m)
    code for async load
    some links to js-files (like jquery.js)

    </head><body>

    //page content...

    $(document).ready(function() {
        all jQuery stuff
    )};
</body></html>

Возможно, что-то в структуре неправильно, но при открытии страницы в Chrome 15 я получаю сообщение об ошибке типа Object [object Object] has no method 'XXX', где XXX - функции из этих плагиновдолжны были загружаться асинхронно.

Кстати: в IE9 эта проблема, похоже, не появляется.

1 Ответ

1 голос
/ 18 января 2012

Проблема в том, что ваш код в document.ready должен выполняться до загрузки скриптов.Вы должны использовать getQ jQuery внутри $ (document) .ready:

$.getScript('plugin-dependency.js', function(){
   //Do Stuff with the loaded plugin
});

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

Дополнительная информацияо getScript для jQuery.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...