javascript - 具有异步属性的脚本元素仍然阻止浏览器呈现?

标签 javascript google-chrome asynchronous

我使用 cuzillion工具构建 page :

<head>
  <script async></script>
</head>
<body>
   <img />
   <img />
   <img /> 
</body>  

head中只有一个script元素,有async属性,延迟2秒,3秒执行。

但是 Chrome 中的页面加载时间轴是:

enter image description here

当脚本执行时,它仍然阻塞浏览器渲染进程?

但是为什么?它不应该异步执行吗?

但是它不会阻塞解析器:

enter image description here

最佳答案

任何脚本的执行总是会阻止同一选项卡中其他脚本的解析、呈现和执行。 async 属性不会改变这一点。

async 所做的唯一一件事就是告诉浏览器应该获取脚本(假设它是一个远程文件)而不阻止这些事件。

下载脚本后,脚本会在下一个可用机会开始执行(即,在当前脚本(如果有)完成运行之后;当然,新脚本不会中断正在运行的脚本)。一旦发生这种情况,您的渲染就会被阻止。因此,对于一个快速的网络服务器,下载发生得如此之快以至于 async 没有任何区别。

如果您不希望脚本暂停渲染,请使用 defer 属性而不是 async。这将延迟脚本的执行,直到文档完全加载之后。

关于此的更多信息 here .

关于javascript - 具有异步属性的脚本元素仍然阻止浏览器呈现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22294131/

相关文章:

javascript - 为什么这个 <div> 元素不会按照我希望的方式移动到使用 jQuery 的方式?

javascript - 从javascript中的对象获取值

css - Flexbox 在 Chrome 中将空行放在 <li> 中

Javascript 在 Chrome 中返回 null,在源代码中返回 HTML 元素

iOS:在填充 TableView 之前等待异步方法

Java 6 线程输出不是异步的?

javascript - Luhn算法的实现

javascript - 使用 Angular 模板引用将动态值附加到动态文本字段

css - Chrome CSS 失败

c# - 在 C# 中异步解析 CSV 文件的最佳方法是什么