Да, просто замени весь шаблон на этот:
|

15.10.2009, 15:19
|
|
Аспирант
|
|
Регистрация: 27.09.2008
Сообщений: 88
|
|
|
Загрузка по требованию. Как реализовать?
Собственно есть такая задача. Нужно проверить подключеня ли библиотека Jquery и если нет, то подключить.
Пытаюсь проверить таким образом
if (typeof jQuery === "undefined") {
var s = document.createElement("script");
s.src = "'.$mosConfig_live_site.'/components/com_с/ajax/jquery.latest.min.js";
document.getElementsByTagName("head")[0].appendChild(s);
//doc.body.appendChild(s);
}
jQuery(function($) {
alert("Testing");
});
т.е. проверка срабатывает, но вот никак не хочет создавать script и подключать его в head.
В чем проблема и где грабли?!
|
|

15.10.2009, 15:30
|
|
|
Регистрация: 09.07.2008
Сообщений: 3,873
|
|
|
Если jQuery не подключен, то typeof jQuery вызовет ошибку, так как переменная не определена. Проверяйте window.jQuery. И подключаемый скрипт начнет загружаться асинхронно, поэтому нельзя сразуже в коде использовать jQuery, нужно дождаться загрузки скрипта.
|
|

15.10.2009, 15:32
|
 |
Профессор
|
|
Регистрация: 03.04.2009
Сообщений: 1,263
|
|
Сообщение от Octane
|
|
Если jQuery не подключен, то typeof jQuery вызовет ошибку, так как переменная не определена.
|
Да ну?
UPD
Viper, посмотрите, как реализовано выполнение скриптов в самом jQuery, и сделайте так же.
|
|

15.10.2009, 15:57
|
|
Аспирант
|
|
Регистрация: 27.09.2008
Сообщений: 88
|
|
Сообщение от Octane
|
|
Если jQuery не подключен, то typeof jQuery вызовет ошибку, так как переменная не определена. Проверяйте window.jQuery. И подключаемый скрипт начнет загружаться асинхронно, поэтому нельзя сразуже в коде использовать jQuery, нужно дождаться загрузки скрипта.
|
отнюдь. как раз таки проверка и работает. но вот сама загрузка нет.
Сообщение от e1f
|
Да ну? 
UPD
Viper, посмотрите, как реализовано выполнение скриптов в самом jQuery, и сделайте так же.
|
собственно взято из JQ
var head = document.getElementsByTagName("head")[0] || document.documentElement,
script = document.createElement("script");
script.type = "text/javascript";
script.src = "'.$mosConfig_live_site.'/components/com_c/ajax/jquery.latest.min.js";
head.insertBefore( script, head.firstChild );
результата 0.
|
|

15.10.2009, 16:00
|
|
Новичок на форуме
|
|
Регистрация: 19.02.2008
Сообщений: 9,177
|
|
Viper,
вы пропустили главную реплику
|
Сообщение от Octane
|
|
И подключаемый скрипт начнет загружаться асинхронно, поэтому нельзя сразуже в коде использовать jQuery, нужно дождаться загрузки скрипта.
|
|
|

15.10.2009, 16:23
|
|
Аспирант
|
|
Регистрация: 27.09.2008
Сообщений: 88
|
|
такс... ну совсем темный лес...
Kolyaj уже наступил на граблю...
_http://remysharp.com/2007/11/14/on-demand-script-loading/
нашел вроде бы то что нужно, но опять же не пашет...
Может кто-нить толково разъяснить на пальцах. Ну или код чтоли привести если несложно
ЗЫ! В js новичек.
|
|

15.10.2009, 16:32
|
|
Новичок на форуме
|
|
Регистрация: 19.02.2008
Сообщений: 9,177
|
|
|
|
|

15.10.2009, 17:04
|
|
|
Регистрация: 09.07.2008
Сообщений: 3,873
|
|
|
Сообщение от e1f
|
Сообщение от Octane
|
|
Если jQuery не подключен, то typeof jQuery вызовет ошибку, так как переменная не определена.
|
Да ну?
|
fail… был уверен, что так  вроде в стандарте про это ничего не сказано.
|
|

16.10.2009, 12:41
|
|
Аспирант
|
|
Регистрация: 27.09.2008
Сообщений: 88
|
|
оно конечно хорошо. но загружать ещё 80кб кода слишком уж накладно. к тому же 90% того функционала мне не нужно. и уж простите через жопу загружать плагины для JQ(пусть и валидно)...
к тому же попробовал подключить библиотеку из стороннего места, понял что нужно ещё больше кода переписывать.
ЗЫ! Решение в поиске. Простое!
|
|

16.10.2009, 12:50
|
|
Новичок на форуме
|
|
Регистрация: 19.02.2008
Сообщений: 9,177
|
|
Я вам не предлагаю брать именно это решение. Это пример реализации, и того, что в динамической подгрузке все не так просто. События загрузки скрипта нет, поэтому или вы добавляете в подгружаемые файлы служебный код, или по таймауту проверяете появление каких-либо объектов. Оба варианта плохие.
|
Сообщение от Viper
|
|
Решение в поиске.
|
Там все решения есть, только им пользоваться никто не хочет/не умеет.
|
|
|
|