Почему defer не работает?

297
14 марта 2017, 15:08

Примитивный пример: Есть скрипт с алертом, подключенный вот так <script src="js.js" defer></script> с defer. При обновлении сперва появляется алерт и только потом контент страницы. Почему так ведь defer подразумевает сперва загружать содержимое страницы и только потом скрипт?

Answer 1

Скрипт с атрибутом defer выполняется не после отрисовки контента, а после окончания парсинга HTML, построения DOM и CSSOM. Ваш алёрт появляется потому, что к моменту его исполнения эти необходимые условия выполнены. Первый пэинт страницы происходит уже после.

defer нужен для того, чтобы не блокировать парсинг HTML и чтобы несколько идущих подряд скриптов выполнились в указанном порядке.

Вот вам пара статей на изучение: https://bitsofco.de/async-vs-defer/, https://bitsofco.de/understanding-the-critical-rendering-path/

READ ALSO
Как получить текст из буфера при операциях cut и copy?

Как получить текст из буфера при операциях cut и copy?

У меня есть задача написать компонент, который будет получать и встраивать ссылки при копировании куска текста, для защиты авторского праваПопытался...

191
Появление блока в области видимости?

Появление блока в области видимости?

Так как не владею информацией , хотелось бы получить информацию от и до , как действовать на DIV при прокрутки в центр ?

403