Waarom JS script onderin laden?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Mathieu Posthumus

Mathieu Posthumus

11/04/2014 10:27:20
Quote Anchor link
Heey mensen,

Ik ben hier in een workshop van een leeraar.

Hij vraagt het zich zelf ook nog af waarom een JS script onderin pas wordt in geladen!

Hebben jullie misschien een idee waarom dat zo is?
 
PHP hulp

PHP hulp

22/12/2024 08:46:53
 
Michael -

Michael -

11/04/2014 10:28:41
Quote Anchor link
Omdat het laden van JS soms vrij lang duurt en niet belangrijk is voor de vormgeving.
Door het onderin te plaatsen wordt eerst de website weergegeven en pas daarna de JS geladen i.p.v. dat de bezoeker dus moet wachten tot JS is geladen en dan pas de website wordt weergegeven.

edit: Met vrij lang bedoel ik geen seconden. Maar voor een website is elke milliseconde belangrijk ;)
Gewijzigd op 11/04/2014 10:29:22 door Michael -
 
Mathieu Posthumus

Mathieu Posthumus

11/04/2014 10:49:47
Quote Anchor link
Thx Michael helemaal super de klas heeft er ook wat aan gehad:D
 
Ivo P

Ivo P

11/04/2014 11:08:00
Quote Anchor link
bovendien doet de js vaak ook wat met de elementen op de pagina (onclick op een plaatje of button bijvoorbeeld), of doet anderzins wat met user-invoer.

Dat kan beide toch niet plaatsvinden voordat de pagina geladen is.
Achteraf js toevoegen is dus niet zo'n gekke gedachte.
 
Erwin H

Erwin H

11/04/2014 11:09:30
Quote Anchor link
Dat is maar de helft van het verhaal. De andere helft (en wat mij betreft het belangrijkere deel) is dat javascript events tijdens het laden worden gebonden aan de elementen op de pagina. Als je javascript bovenin laadt heb je de kans dat de events gebonden moeten worden aan elementen die op dat moment nog helemaal niet bestaan. In dat geval worden die events dus helemaal niet gebonden, ook niet later. Een oplossing voor dit probleem is te wachten, in javascript, totdat het hele document geladen is en dan pas de events te binden. De andere oplossing is om javascript niet bovenin, maar onderin het document te laden. In dat geval weet je zeker dat alle HTML elementen al bestaan en dus alles correct gebonden zal worden.
 
Ward van der Put
Moderator

Ward van der Put

11/04/2014 12:10:36
Quote Anchor link
Erwin H op 11/04/2014 11:09:30:
Als je javascript bovenin laadt heb je de kans dat de events gebonden moeten worden aan elementen die op dat moment nog helemaal niet bestaan. In dat geval worden die events dus helemaal niet gebonden, ook niet later.

Daarmee houden browsers vaak wel rekening. Helaas, moet we daaraan toevoegen, want ze omzeilen dit probleem met deferred rendering: de weergave van alles na de <script>-tag wordt geblokkeerd totdat het externe JavaScript-bestand geheel is geladen.

Bovendien stappen browsers vaak tijdelijk af van het gebruik van meerdere concurrent connections: ze laden de externe JavaScript-bestanden één voor één na elkaar in de opgegeven volgorde, omdat een script voor ander script nodig kan zijn.
 
Wouter J

Wouter J

11/04/2014 12:17:22
Quote Anchor link
Merk overigens op dat dit niet voor elke javascript geldt. Als je bijv. een JS script hebt die custom fonts laad, wil je meteen beschikbaar hebben. Anders zie je een lettertype verandering: Eerst zie je het default lettertype en pas als JS geladen is het custom lettertype
 
Mathieu Posthumus

Mathieu Posthumus

11/04/2014 19:13:25
Quote Anchor link
Wouter J op 11/04/2014 12:17:22:
Merk overigens op dat dit niet voor elke javascript geldt. Als je bijv. een JS script hebt die custom fonts laad, wil je meteen beschikbaar hebben. Anders zie je een lettertype verandering: Eerst zie je het default lettertype en pas als JS geladen is het custom lettertype


Dankje dat vindt ik hele goeie. Die zal ik zeker maandag nog vertellen.
 
Wouter J

Wouter J

11/04/2014 23:08:59
Quote Anchor link
Ook het tegenovergestelde is bedenkbaar. Een google analytics script wil je bijv. altijd onderin plaatsen. En dat komt niet door eerder genoemde redenen, maar door het verkregen van betere data. Zodra het in de head staat wordt hij geladen voordat de pagina zichtbaar is. Dan wordt dus elke bezoeker geteld, zelfs als je de site al wegklikt voordat hij geladen is. Wanneer je je google analytics script onderin plaatst worden alleen bezoekers geteld die ook echt de geladen site hebben gezien.
 
Snelle Jaap

Snelle Jaap

15/04/2014 13:55:31
Quote Anchor link
Wouter J op 11/04/2014 23:08:59:
Ook het tegenovergestelde is bedenkbaar. Een google analytics script wil je bijv. altijd onderin plaatsen. En dat komt niet door eerder genoemde redenen, maar door het verkregen van betere data. Zodra het in de head staat wordt hij geladen voordat de pagina zichtbaar is. Dan wordt dus elke bezoeker geteld, zelfs als je de site al wegklikt voordat hij geladen is. Wanneer je je google analytics script onderin plaatst worden alleen bezoekers geteld die ook echt de geladen site hebben gezien.


zeker eeen goede
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.