Sobes.tech
Middle

Aký je rozdiel medzi tagmi <script>, <script async> a <script defer>?

sobes.tech AI

Odpoveď od AI

Štandardný <script> zastaví analýzu HTML, načíta skript a spustí ho, potom analýza pokračuje.

<script async> načíta skript asynchrónne, kým pokračuje analýza HTML. Skript sa spustí ihneď po načítaní. Poradie spustenia nie je garantované.

<script defer> načíta skript asynchrónne, kým pokračuje analýza HTML. Skript sa spustí iba po dokončení analýzy HTML, ale pred udalosťou DOMContentLoaded. Poradie spustenia skriptov s defer sa zachováva podľa ich výskytu v HTML.

Porovnávacia tabuľka:

Atribút Analýza HTML počas načítania skriptu Spustenie skriptu Zachovanie poradia spustenia
Žiadny Pozastaví Ihneď po načítaní Áno
async Pokračuje Ihneď po načítaní (môže prerušiť analýzu) Nie
defer Pokračuje Po dokončení analýzy HTML Áno

Príklad:

<!-- Bežný skript - blokuje analýzu -->
<script src="script1.js"></script>

<!-- Asynchrónny skript - neblokuje analýzu, spustí sa ihneď po načítaní -->
<script src="script2.js" async></script>

<!-- Odložený skript - neblokuje analýzu, spustí sa po analýze HTML -->
<script src="script3.js" defer></script>
<script src="script4.js" defer></script> <!-- Bude spustený po script3.js -->