Я загружаю два файла JS, один со многими плагинами, включая Jquery. Функция JQuery 'ready()' находится во втором файле.
Код:
function downloadJSAtOnload() {
var element = document.createElement("script");
element.src ='<%= deferJsAll %>';
document.body.appendChild(element);
// second JS file load with isReady goes here
}
// Check for browser support of event handling capability
if (window.addEventListener)
window.addEventListener("load", downloadJSAtOnload, false);
else if (window.attachEvent)
window.attachEvent("onload", downloadJSAtOnload);
else window.onload = downloadJSAtOnload;
You can see when I also load the second file (See comment inside the code).
Проблема в том, что я не могу контролировать порядок выполнения, и даже в этом случае 'ready()' запускается до загрузки JQuery, и я получаю сообщение об ошибке. Есть ли возможность использовать отложенную загрузку и убедиться, что сначала загружаются файлы Jquery, а затем выполняется второй (тот, что с функцией ready())?
Я использую «‹%= deferJsAll %>», потому что я решаю, какой файл обслуживать из CDN, gzip или обычный текстовый JS-файл.
Прогресс: я подумал о том, чтобы просто поставить:
var elementApp = document.createElement("script");
elementApp.src = 'js/app.js';
document.body.appendChild(elementApp);
в конце первого документа. Поэтому, когда первый документ завершит загрузку, он встроит второй зависимый код JS в тело документа. Как вы думаете, это хорошая идея?