这就是我的意思。请看以下示例:
<!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
元素供我附加,但是我不控制页面上我的标记插入的位置,而不是我知道它的事实将在身体的某个地方。 是否有浏览器在async
和defer
脚本的标记上进行扫描,然后才开始进行主要的解析,以查看是否有任何事先应该开始下载? < / p>
如果问题不够明确,请告诉我,我会尽力澄清。
由于
答案 0 :(得分:1)
在解析器到达之前,script
元素不会被操作。
您的"Will this be 2nd?"
脚本将始终在另一个脚本之前运行。
在这两种情况下,您都可以依赖document.body
。
More reading有关async
和defer
的详细信息。