一般会有这样的一个场景,就是用户在关闭浏览器的时候我们需要让用户账号自动注销。
所以会用到浏览器的关闭事件。
现在市场上又有各种花里胡哨的浏览器,他们之间的兼容性又都不一样,所以做个兼容烦的要死。
接下来就说说这个关闭事件兼容,(只供参考)
代码1:判断用户当前用的什么花里胡哨浏览器
var userAgent = navigator.userAgent; //取得浏览器的userAgent字符串
var isOpera = userAgent.indexOf("Opera") > -1; //判断是否Opera浏览器
var isIE = userAgent.indexOf("compatible") > -1 && userAgent.indexOf("MSIE") > -1 && !isOpera; //判断是否IE浏览器
var isIE11 = userAgent.indexOf("rv:11.0") > -1; //判断是否是IE11浏览器
var isEdge = userAgent.indexOf("Edge") > -1 && !isIE; //判断是否IE的Edge浏览器
代码2:根据用户的花里胡哨浏览器去分别执行逻辑
if(!isIE && !isEdge && !isIE11) {//兼容chrome和firefox
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('/AdminController/logOn/?adminId='+adminId);//浏览器关闭
}else{//浏览器刷新
}
}
window.onbeforeunload = function (){
_beforeUnload_time = new Date().getTime();
if(is_fireFox){//火狐关闭执行
$.post('/AdminController/logOn/?adminId='+adminId);//浏览器关闭
}
};
}else {//兼容ie8,9,10
window.onbeforeunload = function() {
$.ajax({
type: "post",
url: "/AdminController/logOn/",
data:{"adminId": adminId},
success: function() {
},
async:false
});
}
window.onunload = onclose;
function onclose(){
}
}