Sobes.tech
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