Показать сообщение отдельно
  #1 (permalink)  
Старый 09.08.2010, 20:47
Новичок на форуме
Отправить личное сообщение для 67bytes Посмотреть профиль Найти все сообщения от 67bytes
 
Регистрация: 09.08.2010
Сообщений: 2

Динамически загружаемая jQuery и jQuery-функции в одном файле
Здравствуйте! Помогите советом, пожалуйста.
Мне необходимо подключить к странице один внешний js-файл, который будет:
- проверять наличие jQuery на странице и если jQuery нет, то динамически подгружать либу
- пока jQuery не загрузится, не исполнять никакой код из этого файла
- после потверждения загрузки jQuery, исполнить нужные jQuery-функции.
Вот что у меня вышло:

load = function() {
//добавляем в хэд массив ссылок на внешние скрипты
load.getScript();
//исполняем нужный код после загрузки jQuery
load.tryReady(0);
}
load.getScript = function() {
var filename = ["jquery.min.js", "jquery-ui.min.js"]
for (i=0;i<filename.length;i++)
{
var fileref = document.createElement('script')
fileref.setAttribute("type","text/javascript")
fileref.setAttribute("src", filename[i])
if (typeof fileref !="undefined")
{document.getElementsByTagName("head")[0].appendChild(fileref)}
}
}
load.tryReady = function(time_elapsed) {
//проверяем загрузку библиотеки
if (typeof $ == "undefined") {
if (time_elapsed <= 5000) {
setTimeout("load.tryReady(" + (time_elapsed + 200) + ")", 200);
}
else {
alert("jQuery незагружена")
}
}
else //библиотека уже загружена
{
// тут наши функции на jQuery
}
}
load();

Функция рабочая, но из-за setTimeout() могут возникать проблемы, особенно когда вставляешь в эту функцию код нескольких плагинов. То работает, то не работает. Кто-нибудь можеть подсказать, как можно обойтись без setTimeout() для проверки, загрузилась ли jQuery или нет.
Ответить с цитированием