2009-09-29 7 views

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é.

+0

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

+0

@Rakesh: comme ma réponse l'a indiqué il n'y a * aucun moyen * de faire l'injection synchrone '

0

L'ajout de balise de script dynamique est-il asynchrone?

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ée synchronous. 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 rappel document ready de quelque sorte. Ainsi, en revanche, il est techniquement asynchronous parce que d'autres actifs peuvent continuer à fonctionner à côté de cet actif et de ses fonctionnalités.

Questions connexes