【发布时间】:2013-04-11 22:32:22
【问题描述】:
如果它是重复的,请随时关闭这个问题(我找不到能准确回答这个问题的问题。)
专家总是建议将所有 javascript 文件放在正文标记的底部(或在必要时放在前面)。这可以确保页面的其他元素(如 css、图像等)不会因为 javascript 文件而被阻止。
我的理解是浏览器会打开一些连接来下载资源。它以与下载任何其他资源相同的方式下载 javascript 文件。一旦它理解了它的 javascript 文件(通过查看类型),它就会启动一个新线程(Parser)并将这个文件提供给线程进行解析和解释。并继续下载其他文件。如果遇到另一个脚本,它会在创建的线程上排队。我的理解正确吗?还是浏览器在下载脚本文件的同一线程上开始解析,因此该线程上的后续下载被阻止,直到解析完成?
当 javascript 文件来自浏览器缓存时会发生什么?行为是否不同?
我希望所有浏览器(IE、Chrome、FF)的答案都是正确的
【问题讨论】:
-
首先下载 HEAD 中的内容(全部),直到完成才解析 BODY。正文从上到下解析,资源在加载到 DOM(并执行脚本)之前不会等待下载。我假设所有现代浏览器都以这种方式处理它,但如果没有进一步的测试/研究,很难做出这样的声明。
-
一旦在 HTML 中遇到它们就会从上到下进行解析/解释。除非
<script>具有defer或async属性,否则它们会同步完成
标签: javascript