Middle
Koja je razlika između oznaka <script>, <script async> i <script defer>?
sobes.tech АИ
Одговор од АИ
Стандардни <script> зауставља парсирање HTML-а, учитава скрипт и извршава га, а затим наставља са парсирањем.
<script async> учитава скрипт асинхроно, док је парсирање HTML-а у току. Скрипт се извршава одмах након учитавања. Редослед извршавања није гарантован.
<script defer> учитава скрипт асинхроно, док је парсирање HTML-а у току. Скрипт се извршава само после завршетка парсирања HTML-а, али пре догађаја DOMContentLoaded. Редослед извршавања скрипти са defer се одржава у складу са њиховим појављивањем у HTML-у.
Упоредна табела:
| Атрибут | Парсирање HTML-а током учитавања скрипта | Извршавање скрипте | Одржавање редоследа извршавања |
|---|---|---|---|
| Нема | Паузира | Одмах након учитавања | Да |
async |
Наставља | Одмах након учитавања (може прекинути парсирање) | Не |
defer |
Наставља | После завршетка парсирања HTML-а | Да |
Пример:
<!-- Обичан скрипт - блокира парсирање -->
<script src="script1.js"></script>
<!-- Асинхрона скрипт - не блокира парсирање, извршава се одмах након учитавања -->
<script src="script2.js" async></script>
<!-- Одложени скрипт - не блокира парсирање, извршава се након парсирања HTML-а -->
<script src="script3.js" defer></script>
<script src="script4.js" defer></script> <!-- Биће извршен након script3.js -->