HTML文档头部的外部脚本是否保证在包含在主体中的脚本之前执行?

时间:2011-07-05 16:39:47

标签: javascript

我正在尝试在HTML页面中尽可能早地执行一些内联​​javascript,以便在外部.js文件中使用库函数。

虽然我总是看到将库脚本放在头脑中,并且正文中的客户端脚本似乎正常工作,但我无法在任何地方找到文档,保证文档头部中包含的外部脚本在脚本位于文档正文之前运行(w3schools网站除外,但它们不算是一个有信誉的参考)

为了说明,我想知道HTML的用户代理行为如下:

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

这是否记录在任何地方?我在W3C规范中找不到任何内容,或者总结了所有主流浏览器在这个领域的行为的好帖子。请提供链接。

我是否不得不等到onload事件触发才能保证外部脚本已执行?

1 个答案:

答案 0 :(得分:5)

<script></script>标记之间出现的JavaScript语句按外观顺序执行。所以是的,它是有保证的,除非你正在做一些聪明的事情,如延迟加载或类似的东西。

Execution of JavaScript Programs