gpt4 book ai didi

javascript - 想要了解有关延迟和异步的 W3C 规范?

转载 作者:行者123 更新时间:2023-12-03 03:08:02 26 4
gpt4 key购买 nike

参见:https://www.w3.org/TR/html5/scripting-1.html#attr-script-async

该链接将为您提供有关“延迟”和“异步”的 W3C 规范。他们是这么说的:

If neither attribute is present, then the script is fetched and executed immediately, before the user agent continues parsing the page.

如果您有“script.js”,那么您可以用它执行以下操作:

  • 下载文件
  • 从缓存中获取文件
  • “读取”它,因为在实际执行代码之前,必须读取文件中的所有代码(否则提升无法存在)
  • 执行代码

我的英语不太好,所以我现在正在考虑“is fetched”这个词。

If neither attribute is present, then the script is fetched and executed immediately

我看到“已获取”为:

  • 浏览器可以从缓存中获取 script.js
  • 浏览器可以下载script.js

是吗?所以他们使用“获取”,因为如果你说“下载”,那么不包括缓存?

我想讨论非缓存情况,所以在这样的情况下:

If neither attribute is present, then the script is downloaded and executed immediately

我可以这么说吗?如果是,那么我还有最后一个问题。

现代浏览器具有预加载扫描器,可以提前扫描要下载的 JavaScript 文件。所以我想:在“HTML解析器”到达脚本标记之前,也许预加载扫描器已经完成了js文件的下载。因此,当浏览器已经完成下载时,“HTML 解析器”可能会忙于处理脚本标记之前的其他 html。

到目前为止确实如此吗?我自己也不确定。但如果这是真的,那么我不明白 W3C 规范,因为他们说(如果之前的一切都是真的):

If neither attribute is present, then the script is downloaded and executed immediately

那么下载后“立即执行”?如果您处于同步环境中,则在执行 JavaScript 之前,该脚本标记之前的所有 html 都必须位于 DOM 中。

所以,如果所有这些都是真的,那么我不明白为什么他们可以说:“立即执行”?或者预加载扫描仪是非官方的,因此 W3C 在其文档中忽略了这一点。那么在这种情况下,W3C 规范实际上只适用于较旧的浏览器?或者浏览器可以从预加载扫描仪中获取脚本吗?这会在“HTML 解析器”位于脚本标记时发生,也许我必须这样看它?

或者我如何才能看到这个?

最佳答案

有一个完整的标准准确地描述了“获取”的含义。 Fetch Standard

除了缓存和下载之外,还必须考虑 Service Worker 的行为。本质上,“立即执行”意味着如果缺少 async 和 defer 属性,则必须在 DOM 上执行脚本,如下所示当 </script> 时它存在解析器遇到结束标记。解析器在脚本运行时暂停,只有在脚本运行完成后才恢复。

预加载扫描程序可能会导致脚本被下载,但无法运行。这意味着如果解析器实际处理脚本元素并运行其脚本,则脚本将在缓存中(或在其途中)可用。

关于javascript - 想要了解有关延迟和异步的 W3C 规范?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47082962/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com