Sobes.tech
Junior

Perché gli script vengono normalmente collegati alla fine del tag body?

sobes.tech AI

Risposta dell'AI

Per evitare blocchi nel rendering della pagina e garantire l'accesso agli elementi DOM subito dopo il caricamento.

Quando si collegano gli script in <head> o all'inizio di <body> senza gli attributi async o defer, il browser interrompe l'analisi dell'HTML e il rendering della pagina fino a quando lo script non viene caricato ed eseguito. Questo rallenta le prestazioni visibili del sito.

Collegare alla fine di <body> garantisce che l'albero DOM sia già completamente formato al momento dell'esecuzione dello script, consentendo di interagire direttamente con gli elementi senza dover usare gestori di eventi come DOMContentLoaded o load solo per accedere agli elementi.

Gli attributi async e defer sono alternative moderne che offrono opzioni più flessibili per caricare gli script senza bloccare l'analisi dell'HTML:

  • async: Lo script viene caricato in modo asincrono e viene eseguito subito dopo il caricamento, senza attendere che il DOM sia completamente caricato. L'ordine di esecuzione degli script asincroni non è garantito.
  • defer: Lo script viene caricato in modo asincrono e viene eseguito dopo l'analisi completa dell'HTML, ma prima dell'evento DOMContentLoaded. Gli script con defer vengono eseguiti nell'ordine in cui appaiono nel markup.