Мозг работы известного доктора.
Не могу не написать, вы уж простите.
Чтобы избежать попадания загрузки ваших скриптов в лаг между началом загрузки и активацией jquery.js, стоит, во-первых, использовать глобальный скрипт, который будет заниматься исключительно запуском других модулей, а во-вторых, использовать такую конструкцию:
$.getScript("path/to/sсriрt1.js", function(){
$.getScript("path/to/sсriрt2.js", function(){
$.getScript("path/to/sсriрt3.js", function(){});
});
});
Это означает: осуществлять загрузку JQuery-скриптов через getScript и инициализировать загрузку следующего скрипта в callback-функции предыдущего вызова.
Получается этакая матрешка, что, наверное, не очень хорошо, но другого метода избежать случайных ошибок (до 20% случаев в IE6, между прочим) при загрузке серии скриптов мне пока найти не удалось.
Вызов глобального скрипта, я думаю, лучше просто дописать в конец jquery.js.
Чтобы избежать попадания загрузки ваших скриптов в лаг между началом загрузки и активацией jquery.js, стоит, во-первых, использовать глобальный скрипт, который будет заниматься исключительно запуском других модулей, а во-вторых, использовать такую конструкцию:
$.getScript("path/to/sсriрt1.js", function(){
$.getScript("path/to/sсriрt2.js", function(){
$.getScript("path/to/sсriрt3.js", function(){});
});
});
Это означает: осуществлять загрузку JQuery-скриптов через getScript и инициализировать загрузку следующего скрипта в callback-функции предыдущего вызова.
Получается этакая матрешка, что, наверное, не очень хорошо, но другого метода избежать случайных ошибок (до 20% случаев в IE6, между прочим) при загрузке серии скриптов мне пока найти не удалось.
Вызов глобального скрипта, я думаю, лучше просто дописать в конец jquery.js.
-
-
14.05.2008 в 17:31-
-
14.05.2008 в 17:36Виноват, признаю. Однако в этом посте есть необходимость.
-
-
14.05.2008 в 20:12Т.е. если у меня в страницу подгружается несколько js файлов и в разных файлов разные функции, то я рискую "недонайти" какую-то функцию, когда буду вызывать её близко (по времени) к событию onload?...
-
-
14.05.2008 в 21:35-
-
15.05.2008 в 00:02Инициализация десятка модулей при загрузке странички подлагивает в опере - она все как-то многопоточно делает. Соответсвенно в ключевых местах приходится делать проверки наличия зависимого модуля и повторной инициализации текущего после загрузки зависимого.
Динамические js-инклюды только осложняют ситуацию.
ЗЫ центральный объект не спасает.
-
-
15.05.2008 в 01:52Я считаю, чистый js смысла в природе не имеет. Это такая жесть, которая для человеческого мозга не приспособлена. Пусть на ней киборги кодят, а мои потребности в динамике JQuery в принципе удовлетворяет. Тем более, что JQuery не исключает использования javasсript, а просто весьма серьезно облегчает работу с js.
-
-
15.05.2008 в 10:18а как использовать каллбэки, если функции подключаются опционально, организуя приличное широкое дерево вариантов?
-
-
15.05.2008 в 10:27Все зависимости - в матрешку. Почему бы и нет.
Кстати, она относительно кроссбраузерна.
-
-
29.05.2008 в 17:07но callback.....)))))))))
-
-
29.05.2008 в 17:11Посмотрим на ajaxManager.
А в чем проблема с callback?
-
-
29.05.2008 в 17:25Вот у меня сделано что при подгрузке скрипта он регистрирует свои объекты и их зависимости в корневом объекте, что грузится и запускается самым первым. А дальше при попытке вызвать любой из модулей - тот проходит по своим зависимостям, проверяет их наличие, а при отсутствии наличия - загружает и запускает их.
-
-
29.05.2008 в 17:28-
-
29.05.2008 в 18:17как бы приемлемо, вариант рабочий, но не "комильфо", согласитесь ))
а если юзать очередь запросов (ajaxManager), то там уже добрые люди встроили событие готовности для получаемого контента
-
-
29.05.2008 в 18:24запакованная библиотека весит оч мало, потом можно же взять только ядро, и подключать доп модули по мере надобности
но обход с помощью селекторов, скажем 1000 объектов DOM сильно быстрее и проще
например, есть (не помню как зовут) плагин, подсвечивающий код хтмл, жс и прочий. там прилагаются забавная статистика по скорости работы
прикинуть сложно, как сделать также быстро на чистом жс
конечно, если обладать абсолютным знанием - то да, но jQuery - это не просто коллекция полезных объектов и функций!
для меня решающим стал фактор изначальной, "вшитой" кросс-браузерности (правда, для Оперы пришлось чуток пропатчить jquery.dimensions)
даже не принимая во внимания инструменты траверса и манипуляции DOM
-
-
30.05.2008 в 01:20Для меня в подобных либах интересны только идеи используемые в них для решения тех или иных задач.
j-Walker Нет. Зачем?
-
-
30.05.2008 в 10:23-
-
30.05.2008 в 14:33-
-
30.05.2008 в 14:35-
-
30.05.2008 в 15:25то есть, загадить малину, несомненно, можно определенным подходом к решению какой-либо задачи, но также можно и не портить эту самую малину.
тут как раз тот самый случай, когда метод пробок и бутылок может заменить понимаение и опыт.
я, например, из не-кросс-браузерности, нашел только неверное определение высоты рабочего пространства браузера для Opera в jquery.dimensions
(у этого браузера свойство clientHeight нужно запрашивать у document.documentElement, а не document.body)
а остальные баги - в сторонних плагинах, причем довольно популярных, и как правило связаны с позиционированием родительских элементов относительно используемых плагином
з.ы. jquery копаю с января, уже оч много перелопатил
-
-
30.05.2008 в 15:36-
-
30.05.2008 в 16:21а вообще, ''Everything should be unobtrusive; emphasize unobtrusiveness in everything'' (с)
это означает, что разработчик берет на себя ответственность за ошибки (в частности) от неспособного работать в этой среде браузера, будь то в зависимости от версии, или же от выключенной обработки скриптов сценария как таковых.
ярким примером является манера создания сайта, когда по флагу <no sсript> либо <no jQuery> человек получает привычный "веб 1.0" с сылками, иначе же активированная оснастка "облагораживает" сайт ajax-переходами и эмуляцией истории
это к примеру.
-
-
05.06.2008 в 14:57