Как стать автором
Обновить

Комментарии 40

по ссылке на книгу автора "Object-Oriented JavaScript" выдает "Page not found"
ну это стандартно: Хабр режет script в ссылке. Тут уж не знаю, что делать, кроме отрыва яиц :)
тиниурл?
Попробовал... АЙС!
Со стилями и правда перебор, имхо.
Ммм... Клево.
А метод jQuery.getScript(), разве не тот же принцип использует?
тот же, в принципе. Только с зависимостями не работает. Однако, чтобы загрузить сам jQuery можно применять уже "ручное" решение :) Как, например, сделано на webo.in
Спасибо :)
спасибо - интересное решенице - надо будет попробовать...
одна плохо что не везде применимо :(
хотя там где не применимо можно использовать прелоадеры - тогда юзер будет видеть что не все так плохо как кажеться :)
Спасибо. Занёс в избранное, потом опробую эти приёмы.
Спасибо, полезная статья.
НЛО прилетело и опубликовало эту надпись здесь
Автор статьи как будто специально игнорирует Оперу!
возможно потому что в опере все итак параллельно подгружается =)
НЛО прилетело и опубликовало эту надпись здесь
В Opera и Safari работает так же как в Firefox
НЛО прилетело и опубликовало эту надпись здесь
Открываем ИЕ4 - не работает, хм... странно
ЗЫ: обновитесь ;)
НЛО прилетело и опубликовало эту надпись здесь
получается, что в танке тот, у кого konqueror
Я обычно закладываюсь на Opera 8.54. А версии меньше 8.54 считаю мёртвыми.
(в этой версии всё работает)
Отбой - про логи не прочитал =(
Интересно, как насчёт кеширования? Есть подозрение, что таким образом скрипты каждый раз будут скачиваться заново.
кеширование работает даже агрессивнее, чем при обычных подключениях
iframe:
+ ничего сложного
+ нет ограничения на домен
+ не тормозится загрузка текущей страницы
+ легко отслеживать факт загрузки скрипта
- все window и document в скрипте нужно переписать на обращение к родительскому окну. как вариант:

function( window, document ){
// тело скрипта
}( parent, parent.document );

если заинтересовал - http://d-o-b.ru/test/s_s/s_s.js
За такие статьи надо людей на руках носить. Грамотно структурированы, грамотно написаны!

Спасибо за перевод!
Как мы видим, файлы скриптов уже не блокируют загрузку, и браузер может начать раблотать с другими компонентами. Общее время загрузки при этом сократилось вдвое.

А-фи-геть. Про самое главное позабыли :). Почему "уже не блокирует загрузку"? Почему не "ещё" :)? Это такое негласное правило? Есть какой-нибудь нормативный документ, описывающий это поведение? Дело в том, что я пару месяцев назад бился над подобной проблемой - динамической загрузкой скрипта(только не на этапе загрузке страницы, а в общем случае - к примеру, по нажатию на кнопку) и меня жутко волновал тот факт, что ничего удобоваримого, кроме как мною же изобретённого варианта мне не предложили(на одном популярном форуме). Заключался мой вариант в том, чтобы добавлять <scr_ipt src="..." />, после чего делался setTimeout(0), чтобы дать браузеру время загрузить скрипт и вернуть управление JS. В частности с eval кроссбраузерного решения не получится(из-за scope... IE - подарок человечеству, не умеющий делать биндинг на глобальный объект, т.е. на window).

Собственно, ещё раз вопрос: это поведение где-нибудь специфицированно или это опытный факт?
ЗЫ. Я понимаю, что это всего-лишь перевод, но мало ли, может кто-нибудь знает? :)
вопрос не ясен: Вы про document.write и блокировку из-за него, или еще про что?
Нет, я про это:
var js = document.createElement('script');
js.src = 'myscript.js';
var head = document.getElementsByTagName('head')[0];
head.appendChild(js);
Где-нибудь специфицированно то, что после добавления таким образом скрипта, его загрузка не будет блокировать загрузку всего остального?(как если бы мы просто руками в head написали <scr_ipt ... />, ну, собственно, я о о том, о чём статья :))
Вообще говоря, упоминаний (в спецификации) не встречал. Но должно следовать из DOM 1/2
Как добавление узла может влиять на загрузку каких-то компонентов? Это уже от внутренних ограничений браузера будет зависеть. Тем более, что окружение для динамического скрипта уже другое (document.write не отработает корректно).

Вопрос, в общем, интересный, но лично мне кажется, что производители бруазеров специально не стали ставить ограничений на изменение DOM (либо потому, что им мало, кто пользуется, либо потому, что окружение другое, либо потому, что просто забыли :).
НЛО прилетело и опубликовало эту надпись здесь
странно, они все грузят с ограничениями на числа одновременных потоков. Проверял по логам сервера
НЛО прилетело и опубликовало эту надпись здесь
:) вероятно, здесь некоторое недопонимание процесса. Браузер
1. Скачивает HTML файл
2. Анализирует HTML-файл
3. Формирует очередь загрузки
4. Загружает очередной компонент
5. Анализирует очередной компонент, при наличии дополнительных внешних файлов переходит к шагу 3.
6. (здесь уже зависит от реализации браузеров) показывает недогруженную страницу на каком-то этапе
7. Показывает догруженную страницу, срабатывает window.onload
8. Загружает все, что сработало по window.onload — параллельно, учитывая ограничения на потоки.

Ситуация, когда браузер начинает отображать недогруженный HTML-файл происходит по таймауту, и рассматривать ее сейчас несколько неуместно — она имеет место примерно в 0,1..0,01% случаев
Не так давно именно об этом говорил. Сам случайно обнаружил. Говорили мне “Blog it!”
Столкнулся с проблемой в IE6 — если определять добавление скриптов в самом теге head, то ИЕ выдает ошибку и не грузит страницу. Тут все, наверное, логично — тег head еще не закрыт и ИЕ не хочет добавлять к нему чайлда. Но с другой стороны в FF2, FF3, Opera9.5 и Safari3 (Win) все работало. Пришлось вынести скрипты добавления в body.
интересно, как в head работали операции с document: он же еще совсем не определен? :) Обычно работу с head начинают по комбинированному window.onload.
Ну, да тут моя ошибка. Хотел предупредить таких же как я :)
А кстати, head входит в document?
Простите за глупый вопрос, лучше пойду спецификацию почитаю)
Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.