观察下面代码:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>王跃坤</title>
</head>
<body>
<div id="div"></div>
<button id="btn">按钮</button>
<script>
var div=document.getElementById("div");
var btn=document.getElementById("btn");
btn.onclick=function(){
div.innerHTML="<h1>点击alert弹框确认键之后才出现</h1>";
alert("注意看网页,innerHTML内容并没有显示");
}
</script>
</body>
</html>
逻辑上来讲,应该是点击按钮后,页面出现大字标题,随后出现弹框,
但是,事实上,我们点击按钮后,直接弹出了弹出框,网页上并没有出现大字标题
我们理一下我们点击按钮后程序的运行过程
- 用户点击按钮,激发onclick函数
- 程序在HTML的div中加入h1标题文字
- window对象调用alert函数
- window对象渲染新的HTML文件
也就是说:
在程序执行的过程中,alert函数直属于window,所以alert函数执行时,阻塞了新的HTML文件的渲染过程,表现在我们的视觉上,感觉上一条语句没有执行,本质是上一条语句已经执行,并且成功嵌入HTML文件,只不过被alert函数阻塞了渲染过程。当我们点击alert的确认键时,渲染进程才可以正常恢复。