运行脚本标签是否阻止其他脚本标签下载?

cal*_*lum 4 html javascript optimization script-tag

这是从的index.htmlHTML5样板,只是前</body>标签:

<!-- JavaScript at the bottom for fast page loading: http://developer.yahoo.com/performance/rules.html#js_bottom -->

<!-- Grab Google CDN's jQuery, with a protocol relative URL; fall back to local if offline -->
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script>window.jQuery || document.write('<script src="js/vendor/jquery-1.7.2.min.js"><\/script>')</script>

<!-- scripts concatenated and minified via build script -->
<script src="js/plugins.js"></script>
<script src="js/main.js"></script>
<!-- end scripts -->

<!-- Asynchronous Google Analytics snippet. Change UA-XXXXX-X to be your site's ID.
     mathiasbynens.be/notes/async-analytics-snippet -->
<script>
  var _gaq=[['_setAccount','UA-XXXXX-X'],['_trackPageview']];
  (function(d,t){var g=d.createElement(t),s=d.getElementsByTagName(t)[0];
  g.src=('https:'==location.protocol?'//ssl':'//www')+'.google-analytics.com/ga.js';
  s.parentNode.insertBefore(g,s)}(document,'script'));
</script>
Run Code Online (Sandbox Code Playgroud)

我知道脚本标签可以阻止并行下载,这就是为什么建议将它们放在底部.

我的问题:浏览器是否真的等待jQuery完全下载并执行它甚至开始下载plugins.js之后然后script.js呢?

或者它是否向前看并尽快开始下载所有脚本(并行),并且只是延迟每个脚本的执行,直到前一个脚本执行完毕?

T.J*_*der 8

我的问题:浏览器是否真的等待jQuery完全下载并执行它甚至开始下载plugins.js之后然后script.js呢?

它可能会也可能不会,但可能不会; 浏览器尝试(在限制范围内)并行化下载以快速加载页面.

或者它是否向前看并尽快开始下载所有脚本(并行),并且只是延迟每个脚本的执行,直到前一个脚本执行完毕?

是的,因为规范要求该部分(缺少asyncdefer属性).正如您的示例所示,在脚本运行之前,它甚至无法确定脚本应该运行的顺序,因为脚本可能会插入另一个脚本.但它可以下载它们并准备好它们.