为什么我的javascript alert()代码在<h1> html标记之前运行?

时间:2018-11-27 11:56:50

标签: javascript html

<h1>Paragraph 1</h1>

<script type="text/javascript">
  alert ("section one bottom");
</script>

我在<h1>标记之后添加了脚本,但是<h1>在JavaScript中的alert()之后仍在运行。为什么?你能解释一下吗?我是Web开发的初学者。

1 个答案:

答案 0 :(得分:7)

h1元素将在alert发生之前存在,但可能尚未渲染(实际上在视觉上,在视觉上,在视觉上)。 Web浏览器上的JavaScript每个窗口都有一个主UI线程¹(有时一个窗口以上共享一个线程)。在大多数浏览器中,该UI线程通常也用于呈现。 alert和其他1990年代功能(promptconfirm)与众不同之处在于,它们完全停止了窗口的主UI线程,并等待用户执行某些操作。显示alert时,大多数浏览器甚至无法渲染。

通常,请避免使用alertconfirmprompt,原因如下:上面的问题,其UI相当笨拙的事实以及浏览器运行缓慢的事实更改它们的工作方式(尤其是在选项卡/窗口处于非活动状态时)意味着它们不要始终停止UI界面,并且会因浏览器而异。


¹不是并不意味着JavaScript是单线程的。 JavaScript本身几乎没有关于线程的论述,而是将其主要留给宿主环境(尽管最近的规范已开始对此进行更改)。在浏览器上,您可以通过web workers拥有多个线程;这些天来,它们甚至可以share memory(在大多数浏览器中暂时被禁用,但很快将能够再次使用。)