dom: загружен не стреляет, пока не будет инициирован последний запрос <img>. (прототип JS) - PullRequest
0 голосов
/ 09 января 2010

Я работаю на странице с более чем 60 изображениями, и событие dom :loaded не запускается до тех пор, пока не будет инициирован последний запрос изображения (не полностью загруженный, что ожидается). На более медленном соединении (использующем некоторый троттлер для симуляции) это очень заметно. Событие dom :loaded запускает что-то, что запускает взаимодействие javascript на странице, что я хочу сделать как можно раньше.

Это не похоже на ожидаемое поведение, поскольку тег изображения уже отображается на странице (в источнике страницы). Или это?

1 Ответ

0 голосов
/ 09 января 2010

Нет, тег <img> не считается полностью обработанным браузером, пока файл изображения не будет полностью загружен. И да, это задокументированное и ожидаемое поведение.

Если вам нужна функциональность onDomReady в прототипе, взгляните на этот скрипт: http://www.skyrocket.be/download/prototype.domReady.js

Еще одна альтернатива, и некоторым людям это не нравится, поэтому я рискую опровергнуть это, чтобы поставить ваш сценарий в конец документа. Javascript выполняется так, как он встречается, и документ создается таким же образом, поэтому блок javascript в конце документа означает, что скрипт может получить доступ ко всем узлам DOM над ним.

Обратите внимание, что наличие блока сценария в теле документа совершенно правильно и правильно в соответствии со спецификациями HTML, и ваша страница будет проверена, если вы это сделаете. На самом деле, и Yahoo, и Google рекомендуют размещать блоки скриптов в конце документа, чтобы сократить время отрисовки страницы. Некоторые люди почему-то считают это уродливым. И раньше я чувствовал то же самое. Но красота в глазах смотрящего.

...