# 1: 监听浏览器关闭事件 --- 后台删用户登录信息 --- IE不可用
.jsp :
var _beforeUnload_time = 0, _gap_time = 0;
var is_fireFox = navigator.userAgent.indexOf("Firefox")>-1;//是否是火狐浏览器
window.onunload = function (){
_gap_time = new Date().getTime() - _beforeUnload_time;
if(_gap_time <= 5)
$.post("webLoginController.do?delSession",function(){}); //浏览器关闭
// else
//$.post("webLoginController.do?delSession",function(){}); //浏览器刷新
}
window.onbeforeunload = function (){
_beforeUnload_time = new Date().getTime();
if(is_fireFox)//火狐关闭执行
$.post("webLoginController.do?delSession",function(){});
};
.java :
@RequestMapping(params = "delSession")
public void delSession(HttpSession session) {
boolean isTrue = false;
String userId = session.getAttribute("userId").toString();
if (userId != null && !userId.equals("")) {
isTrue = webLoginService.deleteOnline(userId);
} else {
isTrue = false;
}
session.invalidate();
}
# 2 : IE可用 --- 谷歌不可用【控制台报错】
window.onbeforeunload=function(){
alert( "您确定退出吗?");
}
# 3 : IE 谷歌 可用
window.onbeforeunload=function(){
return "您确定退出吗?";
}
页面加载时只执行onload
页面关闭时只执行onunload
页面刷新时先执行onbeforeunload,然后onunload,最后onload。
前辈的结论是:
//对于ie,谷歌,360:
-- 页面加载时只执行onload
-- 页面刷新时,刷新之前执行onbeforeunload事件,在新页面即将替换旧页面时onunload事件,最后onload事件。
-- 页面关闭时,先onbeforeunload事件,再onunload事件。
//对于火狐:
-- 页面刷新时,只执行onunload;
-- 页面关闭时,只执行onbeforeunload事件
网友评论