Middle
Jaka jest różnica między tagami <script>, <script async> i <script defer>?
sobes.tech AI
Odpowiedź od AI
<script>: Analiza HTML zatrzymuje się, skrypt jest ładowany i wykonywany, a następnie analiza HTML jest wznawiana. Blokuje renderowanie.<script async>: Skrypt jest ładowany asynchronicznie, równolegle z analizą HTML. Gdy tylko skrypt zostanie załadowany, analiza HTML jest przerywana, aby wykonać skrypt, a następnie kontynuowana. Kolejność wykonywania skryptów asynchronicznych nie jest gwarantowana.<script defer>: Skrypt jest ładowany asynchronicznie, równolegle z analizą HTML. Wykonanie jest odłożone do momentu pełnego zakończenia analizy HTML i budowy drzewa DOM. Kolejność wykonywania odłożonych skryptów jest zachowana zgodnie z ich kolejnością w dokumencie.
Oto tabela podsumowująca różnice:
| Atrybut | Ładowanie | Wykonanie | Blokuje analizę HTML | Kolejność skryptów |
|---|---|---|---|---|
| brak | Synchroniczne | Zaraz po załadowaniu | Tak | Gwarantowane |
async |
Asynchroniczne | Zaraz po załadowaniu (jeśli HTML jest jeszcze analizowany) | Tak (podczas wykonywania) | Nie gwarantowane |
defer |
Asynchroniczne | Po pełnym załadowaniu HTML i zbudowaniu DOM | Nie (z wyjątkiem momentu wykonania, ale po HTML) | Gwarantowane |