JackShcherbakov
@JackShcherbakov

Почему мы иногда пишем document.ready а иногда нет? В чем отличие от window.load?

У меня уже голова болит от этого! В книге ужасно объясняется этот момент! До 5-ой главы в скриптах я никакого document.ready не писал, а тут, когда дело дошло до событий автор резко вспомнил что надо писать document.ready а почему сказал только то, что это надо что бы JS код выполнялся после того как загрузится DOM! Но а зачем тогда этот window.load? И зачем вообще все это, если все и без этого работает?

Спасибо всем, кто поможет!
  • Вопрос задан
  • 1981 просмотр
Решения вопроса 1
Stalker_RED
@Stalker_RED
Событие DOMContentLoaded ( в jQuery $(document).ready()) происходит когда загружен весь HTML и построен DOM.
Событие window.load - когда загружен весь HTML, построен DOM, загружены и применены все стили и изображения (то есть намного позже).

И зачем вообще все это, если все и без этого работает?
Если у вас и так всё работает - не используйте. Однажды появится ситуация, что вы пытаетесь повесить обработчик на форму, а она еще не загружена - придется использовать DOMContentLoaded. Или однажды нужно будет скриптом учесть высоту какого-то блока, но стили еще не прогрузились - тогда воспользуетесь window.load. А пока и так работает, зачем лишний раз изображать карго культ?
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
EaGames
@EaGames
Front-end developer
вообще-то не работает.. Если к обратится к элементу через js когда его ещё не существует, тоесть весь DOM не загрузился, то ничего не получится. нужно подождать когда он загрузится а потом уже к нему обратится и что-то с ним делать.
'после ready' DOM уже создан и уже можно обратиться к элементам, после load не только DOM создан но и всё всё всё загружено пользователем, картинки итп.. в случае с ready пользователю виден только <img> как тег, а в случае load уже и как картинка на экране.
Примерно вот так...
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Artezio Нижний Новгород
от 130 000 до 180 000 ₽
Artezio Москва
от 160 000 до 220 000 ₽
Intspirit Краснодар
от 80 000 до 150 000 ₽