Basis van webtechnologie
Bij de verwerking die een browser uitvoert voordat het eerste scherm wordt getoond (het kritieke renderingpad, critical rendering path), laat een <script src="app.js"> zonder attributen in <head> de HTML-parser op dat punt stoppen. Welke beschrijving van het gedrag als aan dit element het attribuut defer wordt toegevoegd, is juist?
- AHet script wordt uitgevoerd zodra het downloaden klaar is, waarbij de HTML-parser stopt, en de volgorde van uitvoering van meerdere scripts is niet gegarandeerd
- BHet script wordt niet gedownload en niet uitgevoerd, en pas geladen wanneer de gebruiker voor het eerst iets op de pagina doet
- CHet script wordt gedownload terwijl de HTML-parser doorwerkt, en uitgevoerd nadat het document is geparseerd, in de volgorde waarin de scripts in het document staan
Antwoord en toelichting tonen
Antwoord: C. Het script wordt gedownload terwijl de HTML-parser doorwerkt, en uitgevoerd nadat het document is geparseerd, in de volgorde waarin de scripts in het document staan
De browser parseert HTML tot het DOM en CSS tot het CSSOM, combineert die twee om te bepalen wat er moet worden getekend, berekent de posities en afmetingen van de elementen (lay-out) en tekent ze daarna (paint). Een script-element zonder attributen kan het DOM herschrijven, dus de HTML-parser stopt tot het script is gedownload en uitgevoerd. Met defer gaat het downloaden door terwijl de parser verder werkt, en vindt de uitvoering plaats nadat het hele document is geparseerd, in de volgorde waarin de scripts in het document staan. Met async wordt een script uitgevoerd zodra het downloaden klaar is, zodat de volgorde niet gegarandeerd is.