Le javascript dynamique est-il ajouté de manière synchrone ou non?

En outre, lorsque le code est chargé, lors de la définition de l'attribut .src ou de l'ajout de l'élément. Pour illustrer:

 var test = document.createElement('script'); test.src = 'some_path'; // is code loaded here? document.head.appendChild(test); // or here? ... // or is it an asynch operation? 

Lors de la création dynamique d'un élément de script, le fichier source ne sera pas chargé ou exécuté avant que l'élément ne soit inséré dans le document . Le chargement d'un script est asynchrone . Cela signifie que votre code contient les éléments suivants:

  1. Créer l'élément de script
  2. Attribuer un attribut source
  3. Placez l'élément dans le document
  4. Commencer à charger le fichier source de manière asynchrone
  5. Lorsqu'il est chargé, exécutez le script

Edit: Merci d'indiquer que le réglage de la propriété async n'a aucun effet sur le comportement de chargement des scripts. Je ne l'ai jamais utilisé et j'ai supposé que cela fonctionnerait, mais il semble que cela ne l'est pas. J'ai supprimé la partie en affirmant qu'elle le fera. J'ai fait un exemple pour montrer cela .

Javascript s'exécute en haut en bas, à moins qu'il s'agisse d'une fonction, d'un appel asynchrone vers un serveur ou d'une fermeture qui attend un événement (c.-à-d. window.load() )

Votre code est le suivant:

 var test = document.createElement('script'); //declare variable test to create script element test.src = 'some_path'; //define element with src attribute 'some_path' document.head.appendChild(test); //place script element in head block 

Bien que je vous recommande de créer des blocs de script dynamiques côté serveur pour éviter les complications en raison d'exceptions et de possibilités de charge élevées / temporelles.

Vous pouvez insérer des points d'arrêt dans les outils Firebug et Chrome Dev pour parcourir vos scripts et voir ce qui se passe aussi. Plus d'informations: https://developers.google.com/chrome-developer-tools/docs/javascript-debugging