« Programmation JavaScript/Ordre d'évaluation » : différence entre les versions

Contenu supprimé Contenu ajouté
Aucun résumé des modifications
Ligne 1 :
<noinclude>{{Programmation JavaScript}}</noinclude>
[[Programmation JavaScript/Ligne d'instruction|<< Ligne d'instruction]] / [[Programmation JavaScript/Bloc d'instructions|Bloc d'instructions >>]]
 
== Scripts ==
Lors du chargement d'une page Web, dès que le navigateur rencontre un script, il l'exécute avant de charger la suite du document HTML. Si le script contient des instructions qui doivent être évaluées immédiatement et qui manipulent le document, ce dernier risque de ne pas être prêt.
 
Lorsque lades balisebalises <code>&lt;script&gt;</code> possèdepossèdent l'attribut <code>defer</code>, le navigateur est supposé télécharger ces scripts en parallèle (donc plus rapidement), et attendre d'avoir fini le chargement de la page avant d'exécuterde leles script,exécuter maisdans ce nl'est pas très clair dans la spécification, et encore moins dans lesordre différentesdes implémentationsbalises.
 
Lorsque qu'elles possèdent l'attribut <code>async</code>, le navigateur les télécharge et exécute en parallèle, dans un ordre qui dépend du contexte, donc aléatoire et potentiellement avant la fin du chargement de la page. Il ne faut donc jamais l'utiliser pour charger des bibliothèques ayant des dépendances, comme jQuery.
 
S'il faut manipuler le document au moment du chargement, il est donc fortement recommandé de déclencher le code ''après'' avoir déclaré toute partie du document qui doit être utilisée. Il reste bien sûr possible de déclarer la plupart du code dans des fonctions avant le corps du document, comme cela est fait couramment, et soit d'appeler les fonctions dans un script ultérieur, soit de placer ces instructions dans la méthode <code>document.onload</code>.
Ligne 26 ⟶ 29 :
 
[[Programmation JavaScript/Ligne d'instruction|<< Ligne d'instruction]] / [[Programmation JavaScript/Bloc d'instructions|Bloc d'instructions >>]]
 
[[Catégorie:Programmation JavaScript (livre)]]