En attente d'un script chargé dynamiquement
Dans ma page, j'ai besoin d'insérer ce code à la suite d'un appel AJAX:
<p>Loading jQuery</p>
<script type='text/javascript' src='scripts/jquery/core/jquery-1.4.4.js'></script>
<p>Using jQuery</p>
<script type='text/javascript'>
$.ajax({
...
});
</script>
Je ne peux pas utiliser $.load()
depuis que le document a déjà été chargé, de sorte que l'événement n'a pas le feu.
Est-il sécuritaire? Si non, comment puis-je m'assurer que le script jquery est chargé avant ma coutume, le code généré est exécutée.
source d'informationauteur Aaron Digulla
Vous devez vous connecter pour publier un commentaire.
Il est assez sûr. Historiquement,
<script>
balises sont pleins de blocage, d'où le deuxième<script>
balise ne peut pas obtenir rencontrés befored le premier a terminé l'analyse/excuting. Seul problème pourrait être que le "moderne" navigateurs ont tendance à charger les scripts de manière asynchrone et différé. Alors pour s'assurer que la commande est correcte, l'utiliser comme ceci:Cependant, il est probablement une meilleure idée de l'utilisation de dynamic balise de script d'insertion au lieu de pousser ce que HTML chaîne dans le DOM. Serait la même histoire
Ajouter un ID à votre fichier de script de sorte que vous pouvez l'interroger.
Puis ajouter une charge d'auditeur en JavaScript
Il y a également de nouvelles fonctionnalités
jQuery 1.6
. Il est appeléjQuery.holdReady()
. Il est en fait auto-explicatif; lorsque vous appelezjQuery.holdReady(true)
ready
événement n'est pas déclenché, jusqu'à ce que vous appelezjQuery.holdReady(false)
. Mettre ce paramètre à false ne sera pas automatiquement l'incendie d'un prêt de l'événement, il supprime juste le tenir.Ici est un non-bloquant exemple de chargement d'un script prises à partir de la documentation:
Voir http://api.jquery.com/jQuery.holdReady/ pour plus d'informations
$.ajax $.de charge sont la même chose. Vous pouvez utiliser soit. Si vous mettez $.charge dans une balise script sur la page qu'il va se déclencher quand il charge tout comme $.ajax().
Quand il s'agit d'attente pour obtenir un script de feu avant de vous faire quelque chose de ce Tomalak dit, c'est un peu vrai. L'exception des appels asynchrones. Javascript va faire un appel AJAX puis poursuivre l'exécution du script et lors de l'appel AJAX répond, il sera exécuté le succès/échec selon ce que vous lui dites de faire.
Maintenant dire que vous voulez que votre JS attendre le retour, avec un seul appel, il est assez facile il suffit de l'envelopper chaque chose dans le succès de rappel, ou vous pourriez faire de la façon cool et utiliser $.différé. Cela vous permet de vous faire un tas d'appels ajax ou un et puis d'exécuter du code seulement après l'arrivée.
$.quand & $.puis sont probablement le meilleur de cette situation.
Toute façon ce que vous faites est sûr.