为啥在 document.write 之前出现 alert? [复制]

Posted

技术标签:

【中文标题】为啥在 document.write 之前出现 alert? [复制]【英文标题】:Why does alert show up before document.write? [duplicate]为什么在 document.write 之前出现 alert? [复制] 【发布时间】:2018-04-25 08:08:12 【问题描述】:

当下面的代码按照编写的顺序执行时,为什么alert仍然在第2行呢?谢谢!

document.write ("Hello World");
alert("You wrote to the document!");

【问题讨论】:

评论已删除 停止这样的评论 文档的构建比文件的“解析”花费的时间更长,这就是为什么在构建页面之前执行警报的原因。您需要等到文件准备好。见javascript-that-executes-after-page-load 【参考方案1】:

Javascript 被解释,因此它逐行运行,因此 document.write 首先运行,alert 在其后运行。此外,在单线程 javascript 模型中,进一步执行将停止,直到收到弹出窗口的响应。

您看不到结果的原因是html 的渲染由于弹出警报而停止,因此所有弹出窗口将在您的页面大部分渲染之前看到。 This link will help you understand better.

【讨论】:

【参考方案2】:

现代浏览器的设置使得一旦遇到 JavaScript 代码,它们就会暂停 HTML 的呈现,并在恢复 HTML 呈现之前运行整个 JavaScript。

【讨论】:

以上是关于为啥在 document.write 之前出现 alert? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

为啥 script 标签的 document.write 会有时间差?为啥脚本标签执行延迟?

如果部分写入参与超时块,为啥由 document.write 创建的文档呈现方式不同?

为啥用 document.write() 写 <script> 标签时要拆分它?

为啥javascript小数相减会出现一长串的小数位数?

JavaScript初步

document.write 向文档中写内容,包括文本脚本元素之类的,但是它在什么时候执行不会覆盖当前页面内容尼?