gpt4 book ai didi

javascript - 浏览器对 中的 <script> 的 react 不同

转载 作者:太空狗 更新时间:2023-10-29 13:31:54 26 4
gpt4 key购买 nike

这是我无法理解的问题。看看这段 JS 代码:

<!DOCTYPE HTML>
<html>

<head>
<meta charset="utf-8">
</head>

<body>
<p>The Beginning...</p>
<script>
alert('Hello, Wolrd!');
</script>
<p>...The End Of Doc</p>
</body>

</html>

所以问题是我不明白为什么The Beginning <script> 之前段落未加载/可见标签。在几乎所有的教程中都解释说浏览器在遇到脚本之前加载所有 HTML,然后当遇到脚本时浏览器开始以脚本的编译模式工作,然后当脚本结束时浏览器返回 HTML 模式。

但实际上它的行为似乎有所不同,如The Beginning文本仅出现在 脚本警报之后:

enter image description here

有人能解释一下为什么会这样吗?


PS:只有 Firefox 的行为与教程中描述的一致。

最佳答案

脚本之前的元素已创建并添加到 DOM,但浏览器在 alert 使整个 UI 线程戛然而止。浏览器需要创建元素并将它们添加到 DOM; 还不需要渲染它们。有些会,有些不会。两者都不是“错误”。

我们可以很容易地通过查找甚至阅读其文本来证明第一段的存在:

<p>The Beginning...</p>
<script>
alert("Hello, World! First paragraph's text: " + document.querySelector("p").textContent);
</script>
<p>...The End Of Doc</p>

关于javascript - 浏览器对 <body> 中的 &lt;script&gt; 的 react 不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50757962/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com