日期:2014-05-17  浏览次数:20467 次

js如何区分刷新事件和关闭事件
 弄了一个用户关闭浏览器非法退出系统,
 使用onbeforeunload和onunload 操作,在网上看了看基本上都是使用

 window.onbeforeunload=function (){
alert("===onbeforeunload===");
if(event.clientX>document.body.clientWidth && event.clientY < 0 || event.altKey){
     alert("你关闭了浏览器");
}else{
     alert("你正在刷新页面");
}
}

实际他并没有起作用。请教谁有这方面的经验

------解决方案--------------------
引用:
Quote: 引用:

为什么要区分刷新和关闭呢?

没明白什么叫非法退出系统。
如果不退出就关闭窗口,session就会自动失效(取决于你后端如何设置session过期),那么登陆也会失效的。

我提的非法退出系统就是 我在登陆时设置了他的登陆状态,想在他强制关闭网页时把状态置为下线状态,
那么这个session失效是?


好吧,要实现这个功能,所以就要判断用户关闭窗口?
那你有没有想过,如果用户打开了两个标签,关闭其中一个,你通知了后台说该用户下线了,你说他是在线呢还是下线状态呢?

所以,你的解决方案,第一,行不通,第二,就算行得通也有逻辑上的bug。

你这个“登陆状态”是单纯标志当前用户是否在线之用,还是时时记录网站的当前所有在线人数之用?
------解决方案--------------------
引用:
Quote: 引用:

Quote: 引用:


window.onbeforeunload=function (){
alert("===onbeforeunload===");
if(event.clientX>document.body.clientWidth && event.clientY < 0 
------解决方案--------------------
 event.altKey){
     alert("你关闭了浏览器");
}else{
     alert("你正在刷新页面");
}
return false;
}


1.这中写法IE中支持较好
2.Chrome 仅会弹出是否离开此页/是否重新加载此页。不会执行alert。
3.FireFox 会执行alert后关闭窗口。
没有过多研究,请见谅


我在IE9下测试也是不行嘚



window.onbeforeunload=function (){
alert("===onbeforeunload===");
if(event.clientX>document.body.clientWidth && event.clientY < 0 
------解决方案--------------------
 event.altKey){
     alert("你关闭了浏览器");
}else{
     alert("你正在刷新页面");