监听浏览器关闭事件

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

你可能感兴趣的:(监听浏览器关闭事件)