1

这就是我的意思。举个例子:

<!doctype html>
<html>
  <head><title>test page</title></head>
  <body>
     Will this always be the first thing on the screen every time?
     <script>document.write('Will this be 2nd?');</script>
     <script async src="http://foo.bar/baz.js"></script>
  </body>
</html>

...其中baz.js包括以下内容:

var s = document.createElement('span');
s.innerHTML = 'Is there any possibility that this will be the first thing to appear on the screen whatsoever, like it\'s being loaded over a really badass fiber optic connection?';
document.body.appendChild(s);

我问是因为我的脚本依赖于body页面上已经存在的元素供我附加,但我并没有控制我的标记在页面上的插入位置,除了我知道它会在正文中的某个位置。 是否有浏览器在开始主要解析之前对标记asyncdefer脚本进行扫描,以查看是否应该事先开始下载任何内容?

如果问题不够清楚,请告诉我,我会尽力澄清。

谢谢

4

1 回答 1

1

script在解析器到达它们之前,不会对元素进行操作。

您的"Will this be 2nd?"脚本将始终在另一个之前运行。

在这两种情况下,您都可以依赖document.body.

更多阅读async和的完整细节defer

于 2012-12-14T06:17:52.963 回答