Il y a déjà plusieurs réponses, chacune d'entre elles fonctionne très bien, mais toutes dépendent de s'assurer que jQuery est téléchargé de manière synchrone avant que les dépendances ne tentent de l'utiliser. Cette approche est très sûre, mais elle peut également présenter une inefficacité en ce sens qu'aucune autre ressource ne peut être téléchargée/exécutée pendant que le script de la bibliothèque jQuery est téléchargé et analysé. Si vous mettez jQuery dans la tête en utilisant une balise intégrée, le navigateur des utilisateurs restera inactif pendant le téléchargement et le traitement de jQuery alors qu'il pourrait faire d'autres choses comme télécharger des images, télécharger d'autres scripts, etc
Si vous êtes à la recherche de réactivité rapide au démarrage, chaque milliseconde compte.
Steve Souders m'a beaucoup aidé au cours de l'année écoulée, d'abord lorsqu'il était chez Yahoo, et maintenant chez Google. Si vous avez le temps, consultez ses diapositives pour Even Faster Web Sites et High Performance Web Sites. Excellent. Pour une énorme paraphrase, continuez ici.
Lors de la fixation des fichiers javascript au DOM, il a été constaté que mettre un tag script en ligne < > dans la tête < > du document provoque la plupart des navigateurs pour bloquer tout ce fichier est en cours de téléchargement et analysé. IE8 et Chrome sont des exceptions. Pour contourner ce problème, vous pouvez créer un élément "script" via document.createElement, définir les attributs appropriés, puis l'attacher à la tête du document. Cette approche ne bloque dans aucun navigateur majeur.
<script type='text/javascript'>
// Attaching jQuery the non-blocking way.
var elmScript = document.createElement('script');
elmScript .src = 'jQuery.js'; // change file to your jQuery library
elmScript .type = 'text/javascript';
document.getElementsByTagName('head')[0].appendChild(elmScript);
</script>
Cela garantit que jQuery, pendant le téléchargement et l'analyse syntaxique, ne bloque pas le téléchargement et l'analyse de toutes les autres images ou fichiers javascript. Mais cela pourrait poser un problème si vous avez un script qui dépend de la fin de jQuery avant jQuery. jQuery ne sera pas là et vous obtiendrez une erreur indiquant $ ou jQuery n'est pas défini. Donc, pour vous assurer que votre code va s'exécuter, vous devez faire quelques vérifications de dépendances. Si vos dépendances ne sont pas satisfaites, attendez un peu et réessayez.
<script type='text/javascript'>
runScript();
function runScript() {
// Script that does something and depends on jQuery being there.
if(window.$) {
// do your action that depends on jQuery.
} else {
// wait 50 milliseconds and try again.
window.setTimeout(runScript, 50);
}
}
</script>
Comme je l'ai dit plus tôt, il n'y a pas de problèmes avec les approches présentées précédemment, elles sont toutes valables et fonctionnent toutes. Mais cette méthode garantit que vous ne bloquez pas le téléchargement d'autres éléments sur la page en attendant jQuery.
Cette approche fonctionnera pour n'importe quel fichier, donc si vous devez inclure 10 fichiers js, vous pouvez attacher chacun d'entre eux en utilisant cette méthode. Vous devez juste vous assurer que votre fonction de vérification vérifie chaque dépendance avant de s'exécuter.
Publier un exemple de code –