Chrome Canary中的奇怪HTML <script async =“”>行为(64位)

时间:2015-05-26 21:22:01

标签: javascript html google-chrome asynchronous behavior

采用以下示例 index.html

&#xA;&#xA;
 &lt;!DOCTYPE html&gt;&#xA;&lt; html&gt; &#xA;&lt; head lang =“en”&gt;&#xA; &lt; meta charset =“UTF-8”&gt;&#xA; &lt; title&gt;&lt; / title&gt;&#xA;&lt; / head&gt;&#xA;&lt; body&gt;&#xA;&lt; h1 id =“heading”&gt; h1&lt; / h1&gt;&#xA;&lt; script type =“text / javascript”async src =“1.js”&gt;&lt; / script&gt;&#xA;&lt; script type =“text / javascript”async SRC = “2.js” &GT;&LT; /脚本&GT;&#XA;&LT; / BODY&GT;&#XA;&LT; / HTML&GT;&#XA;  
&#XA;&# xA;

1.js

&#xA;&#xA;
  document.getElementById(“heading”)。style.color =“blue” ;&#XA;  
&#XA;&#XA;

2.js

&#XA;&#XA;
  document.getElementById(“heading”)。style.color =“red”;&#xA;  
&#xA;&#xA;

Internet Explorer(11.0) .9600.17801) Firefox(38.0.1)总是导致标题为红色。

&#xA;&#xA;

然而谷歌浏览器(45.0.2412.0金丝雀64位)偶尔会产生蓝色。始终首先请求 1.js 。只有在 2.js 之后 1.js 的网络请求完成时,才会发生此异常。发生这种情况时,我们可以从有序的脚本事件中看出,因为首先处理 2.js

&#xA;&#xA;
    &#xA;
  1. 接收 2.js 的响应
  2. &#xA;
  3. 接收 1.js
  4. 的响应&#xA;
  5. 接收 2.js的数据
  6. &#xA;
  7. 完成加载 2.js
  8. &#xA;
  9. 接收<的数据em> 1.js
  10. &#xA;
  11. 完成加载 1.js
  12. &#xA;
  13. 评估的脚本文件2.js
  14. &#xA;
  15. 评估 1.js
  16. &#xA;
&#xA;&#的脚本文件xA;

导致 2.js 的脚本事件偶尔发生在 Google Chrome 中的 1.js 之前的原因是什么?它是否与前面的事件有关,例如加载(解析),渲染或绘制?

&#xA;&#xA;

这些是唯一正在执行的3个源文件,没有黑盒子脚本和 index.html ,而不是在本地或远程服务器上读取。

&#xA;

0 个答案:

没有答案