Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 25.11.2008, 02:42
Аспирант
Отправить личное сообщение для no_alex Посмотреть профиль Найти все сообщения от no_alex
 
Регистрация: 20.08.2008
Сообщений: 56

Готовность HTML кода
Привет всем!

Такая задача:
  • JavaScript загружается в <head>...</head> но не активируется.
  • Надо активировать (запустить выполнятся) этот скрипт в тот момент, когда HTML код полностью сформирован

Активация по событию onload не подходит, т.к. это событие наступает только после загрузки остальных элементов (изображений и т.п.).

Как вариант я пробовал вставлять активирующий JavaScript-код непосредственно перед закрывающим тегом </body>. Этот вариант срабатывает, но мне очень хотелось-бы "уйти" от этого дополнительного активирующего кода. Желательно, чтобы весь скрипт целиком располагался в <head>...</head>.

Решаема такая задача?
Ответить с цитированием
  #2 (permalink)  
Старый 25.11.2008, 09:13
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от no_alex
Желательно, чтобы весь скрипт целиком располагался в <head>...</head>.
Откуда такое жесткое условие?

Как минимум два плюса от подключения js в конце файла:
1. Пользователь сразу грузит полезный ему контент, а не ждет, пока загрузится бесполезный в данный момент JavaScript.
2. Не нужны никакие onload.

Сообщение от no_alex
Решаема такая задача?
Решаема конечно. http://webo.in/articles/habrahabr/05-delayed-loading/ Вот только нужно ли столько усилий ради непонятного желания разместить скрипт в head, если у вас не универсальная библиотека, которая должна работать при любых условиях.

Ну и, разумеется, данное событие есть во всех современных фреймворках.
Ответить с цитированием
  #3 (permalink)  
Старый 25.11.2008, 12:51
Аспирант
Отправить личное сообщение для no_alex Посмотреть профиль Найти все сообщения от no_alex
 
Регистрация: 20.08.2008
Сообщений: 56

Kolyaj,
Спасибо огромное!
Это именно то, что я искал.

Цитата:
Вот только нужно ли столько усилий ради непонятного желания разместить скрипт в head, если у вас не универсальная библиотека, которая должна работать при любых условиях.
Да. Тут у меня есть определенная специфика. Часть скрипта должна выполниться до формирования HTML-кода, а часть после.

Цитата:
Пользователь сразу грузит полезный ему контент, а не ждет, пока загрузится бесполезный в данный момент JavaScript.
Ждать ему придется только при первом заходе на сайт. При дальнейшем серфинге скрипт уже будет браться из кэша.
И если юзер работает через прокси, то с определенной долей вероятности, ему почти не придется ждать и при первом заходе.
Ответить с цитированием
  #4 (permalink)  
Старый 25.11.2008, 12:54
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

Скрипты, подключенные в теле документа, визуально тормозят загрузку страницы, особенно если в верстке использовалось абсолютное позицонирование, для прибивания футера к низу или поднятия бесполезного для поисковиков, но необходимого пользователю контента в вверх. Используйте событие DOMContentLoaded и его эмуляцию для старых браузеров и ИЕ, которая займет не более десяти строк, но даст больший эффект, чем подключение скрипта до </body>, к тому же в некоторых браузерах, вы не сможете работать с document.body, подключив скрипт до до </body>. Сделайте себе универсальный загрузчик DOMContentLoaded.
Ответить с цитированием
  #5 (permalink)  
Старый 25.11.2008, 13:25
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от Octane
Скрипты, подключенные в теле документа, визуально тормозят загрузку страницы
Т.е. скрипты, подключенные в head не тормозят?
Ответить с цитированием
  #6 (permalink)  
Старый 25.11.2008, 13:37
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

Я написал визуально. Время на загрузку будет одно и тоже, но подключенный в теле документа скрипт начинает загружаться сразу же, тормозя закрытие тега <body>, который часто выступает, как relative-блок для абсолютнопозиционированны х элементов, станица начинает дергаться. Иногда такой эффект может даже мешать нормальной навигации по сайту, во время ожидания загрузки станицы, поэтому такого рода оптимизации уделяют большое внимание при разработке веб-интерфейсов.
Ответить с цитированием
  #7 (permalink)  
Старый 25.11.2008, 13:45
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Octane,
какие-то странные у вас аргументы.

Сообщение от Octane
тормозя закрытие тега <body>
Скрипт, подключенный в head, будет тормозить открытие body.
Сообщение от Octane
станица начинает дергаться
Скрипт подключается последним, ничего не дергается, и ничего никого не тормозит.
Ответить с цитированием
  #8 (permalink)  
Старый 25.11.2008, 14:15
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

Перед открытием боди станица еще не видна.
Ответить с цитированием
  #9 (permalink)  
Старый 25.11.2008, 14:29
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

А перед закрытием все уже видно, и всем можно пользоваться, и ничего не нужно ждать.
Ответить с цитированием
  #10 (permalink)  
Старый 25.11.2008, 15:06
Аспирант
Отправить личное сообщение для no_alex Посмотреть профиль Найти все сообщения от no_alex
 
Регистрация: 20.08.2008
Сообщений: 56

Octane,
Я кажется понял Вашу мысль.
Сегодня попробую проделать пару экспериментов чтобы проверить то, о чем Вы говорите.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Расшифровка кода, генерируемого flash. ГостьФорума Общие вопросы Javascript 6 02.02.2011 01:26
как узнать html код документа, подгруженного в iframe alexKniaz Events/DOM/Window 7 03.12.2008 12:37
На входе HTML получить на выходе просто текст, как? Dmitry Общие вопросы Javascript 2 25.08.2008 10:42
Переменная посреди HTML Борис Низов Элементы интерфейса 5 30.04.2008 10:53
Как с помощью JS "на-лету" менять часть HTML кода greendoc Общие вопросы Javascript 2 18.03.2008 20:43