Un script n'a aucune utilisation réelle jusqu'à ce que le HTML ait fini de se charger - un script ne peut pas changer le DOM tant que le HTML n'est pas chargé. document.ready
attend le chargement du DOM. Donc, ça ne sert à rien de contenir des choses importantes comme les feuilles de style.
Mettez les scripts en bas de la page (avant la </body>
balise) pour que vos HTML et CSS soient transmis à l'utilisateur le plus rapidement possible. Le navigateur sera en mesure de rendre la page beaucoup plus rapidement, puis les scripts peuvent être chargés, plutôt que de laisser une page vierge à regarder par l'utilisateur pendant qu'il attend le téléchargement des scripts.
Pendant que le navigateur affiche progressivement la page, s'il frappe une balise de script (c'est-à-dire un fichier Javascript externe), tout s'arrête . Les scripts ont la priorité - pendant le téléchargement d'un script, le navigateur ne démarre aucun autre téléchargement. c'est-à-dire que les images et les feuilles de style et tout autre téléchargement parallèle seront bloqués, même sur des noms d'hôtes différents.
L'inconvénient de mettre des scripts en bas de la page est que, parce que la page s'affichera avant l'initialisation des scripts, les cliqueurs particulièrement rapides pourront interagir avec votre site avant que Javascript ne soit prêt.
Remarque: l'inverse est vrai pour les feuilles de style - Les feuilles de style situées près du bas de la page bloquent le rendu progressif jusqu'à ce que toutes les feuilles de style aient été téléchargées et les déplacer vers le document HEAD
élimine le problème.
Il existe une astuce intéressante pour charger le javascript sans faire attendre l'utilisateur, vous pouvez créer un <script/>
élément en utilisant la createElement()
méthode DOM et l'ajouter à la page juste avant la </body>
balise de fermeture :
var oScript = document.createElement("script");
oScript.src = "/path/to/my.js";
document.body.appendChild(oScript);
Le navigateur ne commence pas à télécharger le script js tant que le nouvel <script/>
élément n'est pas réellement ajouté à la page. Une fois le téléchargement terminé, le navigateur interprète le code Javascript qu'il contient.