页面加载时只执行onload
页面关闭时只执行onunload
页面刷新时先执行onbeforeunload,然后onunload,最后onload。这样我们可以在onbeforeunload中加一个标记,在onunload中判断该标记,即可达到判断页面是否真的关闭了。
<html>
<head>
<title>判断页面是关闭还是刷新</title>
</head>
<body onunload="fclose()" onload="fload()" onbeforeunload="bfunload()">
<script language="javascript">
var s = "test"
function fclose()
{
if(s=="no")
alert(’unload me!=’+s+’这是刷新页面!’)
else
alert(’这是关闭页面’)
}
function fload()
{
alert("load me!="+s)
}
function bfunload()
{
s = "no"
}
</script>
</body>
</html>
js判断页面是否关闭、刷新或跳转的方法:
window.onbeforeunload=function (){alert("===onbeforeunload===")
if(event.clientX>document.body.clientWidth && event.clientY < 0 || event.altKey){
alert("关闭了浏览器")
}else{
alert("正在刷新页面")
}
}
这段代码就是判断触发onbeforeunload事件时,鼠标是否点击了关闭按钮,或者按了ALT+F4来关闭网页,如果是,则认为系统是关闭网页,否则在认为系统是刷新网页。
你指的弹出窗口是指alert这样的js自带的弹窗,还是只自定义浮于其他组件上的弹窗?系统自带的,确认框也好,输入框也好,都是有阻塞的,因为js是单线程语言,所以弹窗弹出后,整个页面都会阻塞,你的下一步操作可以放在弹窗之后,因为只有完成了弹窗的关闭,之后的代码块才会执行,也就是说在此之后默认就是弹窗关闭了,对于有返回值的也可以用返回值判断。其次就是自定义的弹窗,一般就是div一个遮罩层和一个业务层,使用绝对布局加z-index就可以,这种要判断弹窗是否关闭一般来说有两种,一是生成型弹窗,用js生成,平时不存在与html中,用寻找对应id的组件是否存在的方式就可以判断是否处于关闭状态,二是隐藏型弹窗,给一个display:none的属性,要弹出时就将属性更改为block之类,一般这种就是直接比较这个div的样式中display是否等于none就可以了。