JavaScript - Comment puis-je m'assurer que jQuery est chargé?
J'ai une page web. Lorsque cette page web est chargée, je veux exécuter du JavaScript. Ce JavaScript utilise JQuery. Cependant, il semble que lorsque la page est chargée, la bibliothèque jQuery n'a pas été complètement chargée. De ce fait, mon JavaScript ne s'exécute pas correctement.
Quelles sont les meilleures pratiques pour assurer que votre bibliothèque jQuery est chargé avant l'exécution de votre code JavaScript?
- Post un exemple de code
Vous devez vous connecter pour publier un commentaire.
La bibliothèque jQuery doit être inclus dans le
<head>
partie de votre page:Votre propre code doit venir après. JavaScript est chargé linéairement et de manière synchrone, de sorte que vous n'avez pas à vous inquiéter à ce sujet aussi longtemps que vous incluez les scripts dans l'ordre.
Pour faire de votre code à exécuter lorsque le DOM a fini de se charger (parce que vous ne pouvez pas vraiment utiliser une grande partie de la bibliothèque jQuery jusqu'à ce que cela arrive), faites ceci:
Si vous êtes de mélange frameworks JavaScript et ils interfèrent les uns avec les autres, vous devrez peut-être utiliser jQuery comme ceci:
Il y a plusieurs réponses déjà, chacun d'entre eux de l'excellent travail mais tous dépendent de faire en sorte que jQuery est téléchargé de façon synchrone avant tout dépendances essayez de l'utiliser. Cette approche est très sûr, mais il peut également présenter une inefficacité dans que pas d'autres ressources peuvent être téléchargées/run alors que la bibliothèque jQuery script est en cours de téléchargement et analysée. Si vous mettez de jQuery dans la tête à l'aide d'une balise intégrée, les utilisateurs du navigateur sera assis inactif pendant le téléchargement et le traitement de jQuery quand il pourrait faire d'autres choses comme le téléchargement d'images, le téléchargement d'autres scripts, etc.
Si vous êtes à la recherche pour accélérer la réactivité au démarrage, chaque milliseconde compte.
D'une grande aide pour moi au cours de la dernière année a été de Steve Souders, d'abord quand il était chez Yahoo, et maintenant à Google. Si vous avez le temps, jetez un œil à son diapositives pour Encore Plus Rapide Des Sites Web et High Performance Web Sites. Excellent. Pour un plus grand paraphraser, de continuer ici.
Lors de la fixation des fichiers javascript pour les DOM, il a été constaté que le fait de mettre une ligne <script> dans la balise <head> de documenter les causes de la plupart des navigateurs à bloc alors que le fichier est téléchargé et analysée. IE8 et Chrome sont des exceptions. Pour contourner ce problème, vous pouvez créer un "script" élément par l'entremise du document.createElement, définissez les attributs appropriés, et puis le joindre à la section head du document. Cette approche ne prend pas en bloc dans tous les principaux navigateurs.
Cela garantit que jQuery, lors du téléchargement et de l'analyse, n'est pas bloquant le téléchargement et l'analyse de toutes les autres images, des images ou des fichiers javascript. Mais cela pourrait présenter un problème si vous avez un script qui dépend de jQuery termine son avant de télécharger jQuery n'. jQuery ne sera pas là, et vous obtiendrez un message d'erreur indiquant $ ou jQuery n'est pas défini.
Donc, pour vous assurer que votre code s'exécute, vous devez faire une vérification de la dépendance. Si les dépendances ne sont pas satisfaites, attendez un peu et réessayez.
Comme je l'ai dit plus tôt, il n'y a pas de problèmes avec les approches montré avant, ils sont tous valides et tous les travaux. Mais cette méthode permettra de s'assurer que vous ne bloque pas le téléchargement d'autres éléments de la page lors de l'attente pour jQuery.
Cette approche fonctionne pour n'importe quel fichier, donc si vous avez à 10 js fichiers, vous pouvez associer chacun d'eux à l'aide de cette méthode. Vous avez juste à vous assurer que votre fonction de contrôle vérifie pour chaque dépendance à l'avant de la course.
elmScript .src
etelmScript .type
.)$
est utilisé par une autre librairie javascript, assurez-vous de le remplacer parjQuery
.Il pourrait y avoir deux problèmes. Tout d'abord, vous devez vous assurer que jQuery est inclus avant tout les scripts qui l'utilisent. Cela peut être difficile si vous avez du javascript intégré dans les partiels. Si vous chargez jQuery dans l'en-tête et tous vos autres script dans un bloc de script à la fin du corps, vous pouvez être sûr que jQuery est chargé avant votre code. J'ai essayer de mettre tout à la fin du corps, avec jQuery étant le premier script chargé.
Deuxièmement, vous devez vous assurer que le DOM est chargé complètement avant d'essayer de l'utiliser dans vos scripts. jQuery fournit un prêt méthode pour cela. Enveloppez votre code à l'intérieur de la méthode de prêt et vous pouvez être (plus) sûr que le DOM est disponible pour vous de travailler avec. Pas toutes les images peuvent être chargés, mais vous devriez être ok avec la plupart des tout le reste. Pour les images, vous pouvez avoir à prendre plus soin de faire en sorte qu'ils sont chargés si essentiel à votre code.
ou (raccourci)
Lorsqu'un navigateur rencontre une
script
élément blocs, ce qui signifie que tant que vous avez unscript
élément de chargement de jQuery avant un script qui veut utiliser jQuery, vous devriez être bien, par exemple,Voir L'Ordre De Chargement Des JavaScript pour un commentaire sur ce sujet.
Placez votre code après le jquery et le faire
En général, il suffit d'utiliser la base suivantes du document "chargé" test en jquery. Directement à partir de la les débutants jquery tutoriel:
Je ne peux penser à aucune raison pour que cela ne devrait pas travailler, il y a certainement des millions de sites à l'aide de jquery, qui s'appuie précisément sur ce morceau de code.