Middle
Kuo skiriasi <script>, <script async> ir <script defer> žymės?
sobes.tech AI
Atsakymas iš AI
Standartinis <script> žymeklis sustabdo HTML analizę, įkelia skriptą ir jį vykdo, tada analizė tęsiasi.
<script async> įkelia skriptą asinchroniškai, kol tęsiasi HTML analizė. Skriptas vykdomas iškart po įkėlimo. Vykdymo tvarka nėra garantuota.
<script defer> įkelia skriptą asinchroniškai, kol tęsiasi HTML analizė. Skriptas vykdomas tik po HTML analizės pabaigos, bet prieš DOMContentLoaded įvykį. defer sukelti skriptai vykdomi jų pasirodymo HTML faile tvarka.
Lyginamoji lentelė:
| Ypatybė | HTML analizė vyksta skripto įkėlimo metu | Skripto vykdymas | Vykdymo tvarkos išlaikymas |
|---|---|---|---|
| Nėra | Sustabdo | Iškart po įkėlimo | Taip |
async |
Tęsiasi | Iškart po įkėlimo (gali nutraukti analizę) | Ne |
defer |
Tęsiasi | Po HTML analizės pabaigos | Taip |
Pavyzdys:
<!-- Įprastas skriptas - blokuoja analizę -->
<script src="script1.js"></script>
<!-- Asinchroninis skriptas - neblokuoja analizės, vykdomas iškart po įkėlimo -->
<script src="script2.js" async></script>
<!-- Atidėtas skriptas - neblokuoja analizės, vykdomas po HTML analizės -->
<script src="script3.js" defer></script>
<script src="script4.js" defer></script> <!-- Bus vykdomas po script3.js -->