Sobes.tech
Junior

Miért csatlakozik a script a body tag végén?

sobes.tech MI

Válasz az MI-től

A fő ok az, hogy biztosítsuk a DOM-fa elérhetőségét a szkript futtatása előtt.

Ha a szkript manipulálja a DOM elemeket, például azok id vagy osztály szerinti hivatkozásait szerzi meg, akkor biztosnak kell lennie abban, hogy ezek az elemek már léteznek. A szkript a <body> végén való csatlakoztatása garantálja, hogy futtatásakor a böngésző már elemezte és felépítette az HTML-struktúrát.

Más okok:

  • A betöltési sebesség optimalizálása: A böngésző elkezdheti megjeleníteni az oldalt, mielőtt a szkriptek betöltődnének és végrehajtódnának. Ez gyorsabb betöltés érzetét kelti a felhasználóban.
  • Fehér képernyő elkerülése: Ha egy nehéz szkript blokkolja a renderelést a <head>-ben, a felhasználó üres oldalt láthat, amíg az be nem fejeződik. A <body> végén való csatlakoztatás lehetővé teszi, hogy először a tartalom betöltődjön és megjelenjen.
  • Végrehajtási sorrend: Bizonyos esetekben fontos a szkriptek végrehajtási sorrendje, különösen, ha egymástól függenek. A lenti csatlakoztatás segít ezt a sorrendet rendezni.

Vannak alternatívák, például az <script> címkéhez tartozó async és defer attribútumok, amelyek lehetővé teszik a szkriptek betöltésének és végrehajtásának kontrollját, miközben megőrzik az optimalizálásokat vagy biztosítják a DOM elérhetőségét.

attribútum A szkript futtatása DOM-függőség
async A parse közben (nem blokkol) Nem
defer A parse után (nem blokkol) Igen
<!-- Példa a head-ben defer-rel való csatlakoztatásra -->
<head>
  <script src="script.js" defer></script>
</head>

<!-- Példa a body végén való csatlakoztatásra -->
<body>
  <!-- Az oldal tartalma -->
  <script src="script.js"></script>
</body>