L'ajout de balise de script dynamique est-il asynchrone? Comme inclure dynamiquement un ensemble de fichiers JavaScript provenant d'un domaine différent.L'ajout de balises de script dynamique est asynchrone?
3
A
Répondre
6
Oui, il est asynchrone. L'injection dynamique <script>
entraîne toujours le chargement par le navigateur d'une ressource externe via le DOM (par exemple, tout comme les feuilles de style, les images, le flash), ce qui doit se faire de manière asynchrone pour éviter le blocage du navigateur.
Vous cherchez à JSONP ("JSON avec rembourrage") par hasard? Il utilise l'injection de balises de script dynamique. Cela fait de plus en plus partie des discussions sur "AJAX", et le fait qu'il est impossible de faire du JSONP synchrone (comme le XmlHttpRequest
synchrone) est souvent négligé.
Ne pas utiliser JSONP. Est-il possible de faire de manière synchrone, comme dans ne peut pas invoquer une fonction si elle n'est pas chargée. – Rakesh
@Rakesh: comme ma réponse l'a indiqué il n'y a * aucun moyen * de faire l'injection synchrone '
Oui. Il est considéré comme asynchrone principalement en raison de ce qui se passe lorsque le tag de script n'est pas inséré dynamiquement. Une étiquette de script entièrement formée qui existe dans le DOM provoquera un comportement de blocage, c'est-à-dire que la page ne peut pas continuer à charger d'autres éléments HTML avant que le chargement de ce dernier ne soit terminé. Ainsi, de nombreux développeurs préfèrent placer leurs balises de script juste avant la balise
</body>
. De cette manière, une étiquette est appeléesynchronous
. Par contre, si vous injectez dynamiquement une balise de script, elle n'a pas tendance à afficher un comportement de blocage. Je dis tend parce que, comme vous l'avez vu dans d'autres commentaires, tous les navigateurs ne le font pas. La meilleure chose est d'enrouler ce code de script dynamique dans un rappeldocument ready
de quelque sorte. Ainsi, en revanche, il est techniquementasynchronous
parce que d'autres actifs peuvent continuer à fonctionner à côté de cet actif et de ses fonctionnalités.Source
2012-10-22 21:07:15 Kristian