Sobes.tech
Junior

Proč jsou skripty obvykle připojeny na konci tagu body?

sobes.tech AI

Odpověď od AI

Aby se zabránilo blokování vykreslování stránky a zajistil přístup k prvkům DOM ihned po jejich načtení.

Při připojování skriptů v <head> nebo na začátku <body> bez atributů async nebo defer prohlížeč pozastaví parsování HTML a vykreslování stránky, dokud se skript nenačte a nevykoná. To zpomaluje viditelný výkon webu.

Připojení na konci <body> zaručuje, že strom DOM je již plně vytvořen v okamžiku spuštění skriptu, což umožňuje přímou interakci s prvky bez nutnosti používat obslužné funkce událostí jako DOMContentLoaded nebo load pouze pro přístup k prvkům.

Atributy async a defer jsou moderní alternativy, které nabízejí flexibilnější možnosti načítání skriptů, aniž by blokovaly analýzu HTML:

  • async: Skript se načítá asynchronně a je spuštěn ihned po načtení, bez čekání na úplné načtení DOM. Pořadí spuštění asynchronních skriptů není garantováno.
  • defer: Skript se načítá asynchronně a je spuštěn po úplném parsování HTML, ale před událostí DOMContentLoaded. Skripty s defer jsou spuštěny v pořadí, v jakém se objevují v dokumentu.