【发布时间】:2020-04-15 11:50:53
【问题描述】:
我只是在试验一些与性能相关的优化。
据我了解,任何内联script 都会阻塞渲染,浏览器会在遇到它时立即执行它。它还会停止 DOM 解析。
所以,我希望 body 末尾的内联脚本会阻止渲染,并且浏览器在我关闭警报之前根本不会显示任何内容。
Chrome似乎按照上面的理解进行渲染,但是Firefox先渲染html然后显示alert。
这可能是什么原因?这是否意味着 Firefox 没有考虑将 javascript 渲染阻塞?或者渲染在 Chrome 和 Firefox 中是否意味着其他东西? Firefox 是否通过了解脚本接近 body 的事实进行优化?
这是代码:
<html>
<head></head>
<body>
<div>Some Content</div>
<div>Some Content</div>
<div>Some Content</div>
<div>Some Content</div>
<div>Some Content</div>
<div>Some Content</div>
<div>Some Content</div>
<div>Some Content</div>
<div>Some Content</div>
<div>Some Content</div>
<div>Some Content</div>
<div>Some Content</div>
<div>Some Content</div>
<script>
alert('here');
</script>
</body>
</html>
Chrome 版本:78 火狐版本:70
另一个观察结果是,如果警报在内联脚本与外部脚本中,chrome 的行为会有所不同。它阻止内联脚本中的警报,但不阻止外部脚本中的警报。
更新:后续问题:render-blocking Javascript at end of body tag - inline vs external script
【问题讨论】:
-
请不要更新问题以合并答案,这不是 SO 的工作方式。您最初的问题是关于阻止
alert,这是已回答的。更新问题以提出有关外部脚本的新问题会使问题成为移动目标。 -
实际的问题是关于脚本是否呈现阻塞以及浏览器如何处理它。还没有回答,但是我已经包含了与警报使用相关的更新。我知道随着更新它已经变得广泛。
-
好吧,我们不同意。我不会回答这个问题。但我能够回答它曾经是什么。没什么大不了。 :-)
-
是的,谢谢你的回答。我可能会根据调查结果提出另一个后续问题。其他人会更容易回答,否则这个问题可能会变得太宽泛。
标签: javascript google-chrome firefox web-performance