具有async属性的script元素仍然阻止浏览器渲染?

时间:2014-03-10 07:15:02

标签: javascript google-chrome asynchronous

我使用cuzillion工具构建page

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

头部只有一个脚本元素,具有异步属性和2秒延迟,执行时间为3秒。

但Chrome中的网页加载时间轴为:

enter image description here

当脚本执行时,它仍会阻止浏览器渲染过程吗?

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

但是它不会阻止解析器:

enter image description here

1 个答案:

答案 0 :(得分:3)

任何脚本的执行始终阻止在同一选项卡中解析,呈现和执行其他脚本。属性#!/bin/bash set -m sudo sleep 999 & # run sudo in backgroup pid=$! # save the pid which is also the pgid sleep 5 sudo kill -INT -$pid # kill the pgrp. # Use sudo since we're killing root's processes 不会改变它。

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

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

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

有关此here的详情。

相关问题