【问题标题】:When exactly are javascripts parsed and interpreted? [duplicate]javascripts究竟是什么时候被解析和解释的? [复制]
【发布时间】:2013-04-11 22:32:22
【问题描述】:

如果它是重复的,请随时关闭这个问题(我找不到能准确回答这个问题的问题。)

专家总是建议将所有 javascript 文件放在正文标记的底部(或在必要时放在前面)。这可以确保页面的其他元素(如 css、图像等)不会因为 javascript 文件而被阻止。

我的理解是浏览器会打开一些连接来下载资源。它以与下载任何其他资源相同的方式下载 javascript 文件。一旦它理解了它的 javascript 文件(通过查看类型),它就会启动一个新线程(Parser)并将这个文件提供给线程进行解析和解释。并继续下载其他文件。如果遇到另一个脚本,它会在创建的线程上排队。我的理解正确吗?还是浏览器在下载脚本文件的同一线程上开始解析,因此该线程上的后续下载被阻止,直到解析完成?

当 javascript 文件来自浏览器缓存时会发生什么?行为是否不同?

我希望所有浏览器(IE、Chrome、FF)的答案都是正确的

【问题讨论】:

  • 首先下载 HEAD 中的内容(全部),直到完成才解析 BODY。正文从上到下解析,资源在加载到 DOM(并执行脚本)之前不会等待下载。我假设所有现代浏览器都以这种方式处理它,但如果没有进一步的测试/研究,很难做出这样的声明。
  • 一旦在 HTML 中遇到它们就会从上到下进行解析/解释。除非<script> 具有deferasync 属性,否则它们会同步完成

标签: javascript


【解决方案1】:

将 javascript 放在页脚中的原因是它不会干扰在页面上创建的 HTML 数据。如果您需要包含一个包含函数的 javascript 文件,您可以将其包含在标头中而不会出现任何问题,您需要担心的是使用这些函数的代码。

<head>
<script type="text/javascript>...</script>
<script type="text/javascript>...</script>
...
</head>

<body>
<p>some html here ... </p>
...

<script type="text/javascript">
Here goes your slow, time consuming script which may call the scripts above.
</script>
</body>

【讨论】:

    猜你喜欢
    • 2013-05-20
    • 2015-10-12
    • 2021-08-03
    • 1970-01-01
    • 2011-08-19
    • 1970-01-01
    • 1970-01-01
    • 2018-09-20
    • 2023-03-21
    相关资源
    最近更新 更多