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:
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