Chargement de jquery de manière asynchrone avant les autres scripts
J'ai ajouté le async
attrib pour mon javascript intégration HTML.
Donc maintenant, j'ai:
<script async src="jquery.myscript.js"></script>
Et cela fonctionne avec tous les JS j'ai la charge, tous à l'exception de jquery.
Si j'ajoute async
de jQuery <script>
balise de tous les autres script qui dépendent de jquery ne fonctionne pas.
Dans ce jsfiddle vous pouvez voir le problème:
JsFiddle
Dans l'exemple que j'ai utilisé <script> Mycode </script>
au lieu d'inclure un externe file.js mais cela ne change pas la situation.
Je voudrais jQuery avec async attrib et exécuter d'autres quelques scripts externes de manière asynchrone seulement après que jquery est chargé.
C'est possible?
- peut-être besoin d'utiliser
async=""
au lieu deasync
seul. par exemple, mon blogger.com modèle requis=""
Vous devez vous connecter pour publier un commentaire.
Ça veut dire quoi? Il sonne un peu comme vous voulez charger jQuery d'abord, puis d'autres choses quand il est fait. Donc, vous voulez charger de façon synchrone. Si vous voulez continuer à utiliser l'
async
façon, vous pouvez définir uneonload
fonction pour continuer le chargement d'autres choses une fois que jQuery est prêt. Ou vous pourriez utiliserdifférer
. Deux de ceux-ci sont expliqués ici: https://davidwalsh.name/html5-asyncC'est un excellent cas d'utilisation pour
defer
:Aucune de ces balises de bloc de rendu. Le navigateur peut télécharger
jquery.js
etcustom.js
en parallèle. Il exécuterajquery.js
dès qu'il a été téléchargé et dans les DOM a été chargé, etcustom.js
va exécuter par la suite.Malheureusement, il y a quelques problèmes:
defer
attribut pour les scripts.defer
à de façon inattendue interleave leur exécution.defer
ordre sont destinés à être exécutés dans l'ordre, juste qu'ils sont destinés à être exécuté après le DOM.C'est peut être ce que vous cherchez:
http://www.yterium.net/jQl-an-asynchronous-jQuery-Loader - jQl asynchrone jQuery Chargeur.
De manière asynchrone en charge de jQuery sans bloquer les autres composants:
jQl automatiquement des captures de tous les
jQuery().ready()
appels, de sorte que vous pouvez écrire:jQl aura la file d'attente de ces appels de fonction, et de les exécuter dès que jQuery est chargé et que le DOM est prêt, car ils seraient exécutés de la manière habituelle.
À l'aide d'une fonction récursive
J'ai écrit une fonction pour faire ce travail très agréable.
Vous pouvez mettre ces code dans un fichier, comme
scripts.js
et de le charger avecasync
attribut.Pour css asynchrone en charge, reportez-vous aux versions modifiées de cette réponse.
fixe, il