# 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事件

Logo

欢迎加入 MCP 技术社区!与志同道合者携手前行,一同解锁 MCP 技术的无限可能!

更多推荐