g_hagmt
@g_hagmt
Начинающий веб-разработчик

Есть ли какая-нибудь разница между document.ready и атрибутом defer?

$(document).ready(function() {...});
и
<script defer src='script.js'></script>
Является ли что-то из этого более предпочтительным?
  • Вопрос задан
  • 313 просмотров
Решения вопроса 3
potapchino
@potapchino
defer-скрипты выполняются до того, как выполнится код внутри ready(т.к. .ready() завязан на событии domcontentloaded, то иначе говоря, defer-скрипты выполнятся до тригерринга этого события)
Ответ написан
Zraza
@Zraza
Помог ответ? Отметь решением!
Есть еще нюанс:
Скрипт без defer/async, заблокирует загрузку страницы, пока он не будет загружен, распаршен и выполнен. Даже если код в нем запланирован на отложенное выполнение - это замедлит отображение html (если скрипт подключается не в конце страницы)
Тут неплохая статейка в тему https://habr.com/ru/post/323790/
Ответ написан
Wolfnsex
@Wolfnsex
Если не хочешь быть первым - не вставай в очередь!
Есть ли какая-нибудь разница между document.ready и атрибутом defer?
Есть. Document.ready - это событие, а defer - это атрибут асинхронной загрузки скриптов с сохранением порядка их выполнения.

Является ли что-то из этого более предпочтительным?
Я думаю одно другое не может заменить в полной мере и ещё, как мне кажется, если Вы оставите document.ready там же где он и был, не зависимо от того, будет ли использоваться defer или нет, для совместимости и переносимости кода в будущем - это будет оптимальным решением.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Odisseya
@Odisseya
Оптимизирую PageSpeed & Performance
Разница в последовательности событий:
  1. domInteractive
  2. Запускается defer
  3. domContentLoaded
  4. Запускается document.ready

Помимо разницы во времени запуска, defer делает загрузку скрипта асинхронной и контролирует порядок выполнения скриптов.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы