在HTML h1标记之前处理JavaScript



此HTML文件执行警报消息,然后显示标记消息。而根据代码,它应该首先显示标记消息,然后显示警报提示。

有人能告诉我为什么会这样吗?。

<body>
<h1>Javascript in HTML</h1>
<script>
if(4+3 === 7)
{    
alert("you are smart");
}   
</script>
</body>

是否显示h1取决于浏览器,但在大多数浏览器上,在显示警报时不会显示。原因是尽管h1已经添加到DOM中,但当您的代码调用alert时,页面还没有绘制在屏幕上。alert是20世纪90年代遗留下来的,几乎不应该在现代web编程中使用。它使JavaScript代码和UI绘制代码共享的线程完全停止,防止任何事情发生,直到警报解除。这就是为什么你看不到h1

这个";停止世界";然而,在现代浏览器中,这种行为正在慢慢被削弱。但是,alert几乎不应该在现代web编程中使用。

浏览器不会在每次DOM更新时都重新绘制显示,即使在HTML文档的初始解析过程中也是如此。

它会定期对更改进行批处理并重新绘制。

您的警报恰好在添加到DOM的h1和浏览器重新绘制显示之间触发。(即使使用您正在使用的确切代码,也可能不总是这样。(

JavaScript警报会阻止并阻止重新绘制,直到它们被解除。

最新更新