Les scripts externes sont-ils à la tête d'un document HTML garanti pour l'exécution avant les scripts contenus dans le corps?

J'essaie d'exécuter un javascript en ligne dans une page HTML aussi tôt que possible dans le traitement de la page qui utilise les fonctions de la bibliothèque dans un fichier .js externe.

Bien que j'ai toujours vu que mettre les scripts de la bibliothèque dans la tête, et que les scripts des clients dans le corps semblent fonctionner, je ne trouve pas de documentation où que les scripts externes inclus dans la tête d'un document soient garantis avant l'exécution Situé dans le corps d'un document (sauf sur le site de l'école w3, mais ils ne comptent pas comme une référence réputée)

Pour illustrer, je me demande le comportement User-Agent pour HTML qui ressemble à ceci:

<html> <head> <script type="text/javascript src="libraryModule.js"></script> </head> <body> <script type="text/javascript"> // is this guaranteed to run after the external script? // or is it possible this module that the external library // adds to the global namespace won't be there yet? var result = ModuleInExternalLibrary.DoLibraryThing(); </script> </body> </html> 

Est-ce que cela est documenté n'importe où? Je ne trouve rien dans la spécification du W3C ou dans une bonne publication qui résume le comportement dans ce domaine de tous les principaux navigateurs. Veuillez fournir un lien.

Est-ce que je suis bloqué d'attendre jusqu'à ce que l'événement Onload se déclenche afin de garantir que les scripts externes ont été exécutés?

Les instructions JavaScript qui apparaissent entre les balises <script> et </script> sont exécutées dans l'ordre d'apparition. Donc oui, il est garanti, sauf si vous faites quelque chose d'intelligent comme le chargement différé ou quelque chose de similaire.

Exécution de programmes JavaScript