Я использовал написанное здесь руководство: 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 эта проблема, похоже, не появляется.