【问题标题】:How does a script with an async attribute get executed after it's been fetched具有异步属性的脚本在获取后如何执行
【发布时间】:2021-02-11 21:18:54
【问题描述】:

根据HTML spec<script async>,获取与解析并行,但一旦解析完成,就会中断执行脚本。但是,我没有在规范中找到任何提及解析如何中断的内容。虽然有一个 explanation 说明如何解析阻塞脚本,但我很好奇 <script async> 的机制。

【问题讨论】:

  • 我怀疑这会被指定。从互操作的角度来看,我想不出有什么理由说明解析器中断运行异步脚本的方式和时间到底有多重要,这意味着浏览器制造商希望在能够获得最佳性能时能够灵活地执行此操作。

标签: html browser html-parsing html-parser


【解决方案1】:

规范是通用的,目的是突出预期行为和最终用户的一般期望,因为大多数浏览器会以不同的方式实现此机制,并且也会根据它将运行的平台而有所不同,例如:

  • Linux:使用选择/轮询功能
  • 类 UNIX:kqueue
  • 窗口:操作系统的异步功能

一般该机制会实现事件,一旦“解析事件”完成,触发新事件“脚本执行”被执行(基于上面提到的事件队列),这是暴露给浏览器的低级机制,所以您可能有在某些操作系统上不支持它的浏览器(即使是相同的浏览器),例如,在 raspberry pi 平台上的 firefox 中,该标签将被忽略。

【讨论】:

    猜你喜欢
    • 2013-03-06
    • 1970-01-01
    • 2015-08-18
    • 1970-01-01
    • 1970-01-01
    • 2013-11-05
    • 2018-05-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多