此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警报会阻止并阻止重新绘制,直到它们被解除。