Sobes.tech
Junior

Prečo sa skripty zvyčajne pripájajú na konci tagu body?

sobes.tech AI

Odpoveď od AI

Aby sa zabránilo blokovaniu vykresľovania stránky a zabezpečilo prístup k prvkom DOM ihneď po ich načítaní.

Pri pripájaní skriptov v <head> alebo na začiatku <body> bez atribútov async alebo defer, prehliadač pozastaví analýzu HTML a vykresľovanie stránky, kým sa skript nenahrá a nevykoná. To spomaľuje viditeľný výkon stránky.

Pripojenie na konci <body> zabezpečuje, že strom DOM je už úplne vytvorený v čase vykonávania skriptu, čo umožňuje priame interakcie s prvkami bez nutnosti používať obslužníky udalostí ako DOMContentLoaded alebo load iba na prístup k prvkom.

Atribúty async a defer sú moderné alternatívy, ktoré ponúkajú flexibilnejšie možnosti načítania skriptov, neblokujúc analýzu HTML:

  • async: Skript sa načítava asynchrónne a vykonáva sa ihneď po načítaní, bez čakania na úplné načítanie DOM. Poradie vykonávania asynchrónnych skriptov nie je garantované.
  • defer: Skript sa načítava asynchrónne a vykonáva sa po úplnom parsovaní HTML, ale pred udalosťou DOMContentLoaded. Skripty s defer sa vykonávajú v poradí ich výskytu v dokumente.