我只是在尝试一些与性能相关的优化。
根据我的理解,任何内联script都是渲染阻塞,浏览器一遇到就会执行它。它还会停止 DOM 解析。
所以,我希望我在结束时的内联脚本body应该阻止渲染,并且浏览器不应该向我显示任何东西,直到我关闭警报之后。
Chrome 似乎按照上述理解进行渲染,但 Firefox 先渲染 html,然后显示警报。
这可能是什么原因?这是否意味着 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 Firefox 版本:70
另一个观察结果是,如果警报位于内联脚本与外部脚本中,chrome 的行为会有所不同。它阻止内联脚本中的警报,但不阻止外部脚本中的警报。
更新:后续问题:在正文标记末尾呈现阻止 Javascript - 内联与外部脚本