js判断页面是关闭还是刷新

JavaScript014

js判断页面是关闭还是刷新,第1张

<body>标签只有onload\onunload\onbeforeunload事件,而没有onclose事件。不管页面是关闭还是刷新都会执行onunload事件。如何捕捉到页面关闭呢?

页面加载时只执行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就可以了。