js:
var userAgent = navigator.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; //IEEdge
if(!isIE && !isEdge && !isIE11) {//chrome firefox
var _beforeUnload_time = 0, _gap_time = 0;
var is_fireFox = navigator.userAgent.indexOf("Firefox")>-1;//firefox
window.onunload = function (){
_gap_time = new Date().getTime() - _beforeUnload_time;
if(_gap_time <= 5){
$.ajax({
type : "POST",
url : path + "/textEdit/tokenDelete.action",
data : {conferenceId:conferenceId,username:username,token:$("#tokenPar").val()},
async : false,
cache : false,
success : function(data) {
var response = eval(data);
if (response.msg != "") {
alert(response.msg);
} else {
$("#tokenStr").val("");
}
},
error : function(errs) {
var sessionStatus = errs.getResponseHeader('sessionstatus');
if (sessionStatus == 'timeout'){
top.location.href = path + '/ctrl/login.action?errType=1';
return;
}
if (errs.status == '404'|| errs.status == '500'){
alert(systemError+'【'+errs.status+'】');
} else {
alert(errs.responseText);
}
}
});
}
else{
//refresh
}
}
window.onbeforeunload = function (){
_beforeUnload_time = new Date().getTime();
};
}
else {
//IE11区分刷新和关闭的flg 默认0
var ieFlag = $('#ieFlagPar').val();
//关闭浏览器执行这个
window.onbeforeunload = function (){
ieFlag = 1;
$.ajax({
type : "POST",
url : path + "/textEdit/textunload.action",
data : {"ieFlag":ieFlag},
success : function() {
return true;
}
});
}
//刷新会执行这个
window.onunload = function (){
ieFlag = 0;
$.ajax({
type : "POST",
url : path + "/textEdit/textload.action",
data : {conferenceId:conferenceId,username:username,"ieFlag":ieFlag},
success : function() {
return true;
}
});
}
//刷新会执行这个
window.onload = function (){
ieFlag = 0;
$.ajax({
type : "POST",
url : path + "/textEdit/textload.action",
data : {conferenceId:conferenceId,username:username,"ieFlag":ieFlag},
success : function() {
return true;
}
});
}
}
java:
onlyforIE
@RequestMapping(value = "/textunload")
public Map<String,Object> textunload(HttpServletRequest request,String ieFlag) {
Map<String, Object> responseMap = new HashMap<String, Object>();
HttpSession session = request.getSession();
//线程开启后request 不知为何变为null,可能浏览器关闭后session清空
String conferenceId = (String) session.getAttribute("conferenceId");
String username = (String) session.getAttribute("username");
String token = (String) session.getAttribute("token");
request.getSession().setAttribute("ieFlag", ieFlag);
session.setAttribute("ieFlag",ieFlag);
Thread thread = new Thread(new Runnable(){
@Override
public void run() {
try {
Thread.sleep(10000);
} catch (InterruptedException e) {
e.printStackTrace();
}
deleteTokenCh(request,session,ieFlag,conferenceId,username,token);
}
});
thread.start();
return responseMap;
}
@RequestMapping(value = "/textload")
public Map<String,Object> textload(HttpServletRequest request,String conferenceId,String username,String ieFlag) {
Map<String, Object> responseMap = new HashMap<String, Object>();
request.getSession().setAttribute("ieFlag", ieFlag);
return responseMap;
}
public void deleteTokenCh(HttpServletRequest request,HttpSession session,String ieFlag,String conferenceId,String username,String token) {
if ("1".equals(session.getAttribute("ieFlag")) || session.getAttribute("ieFlag") == null) {
//删除会执行该方法清除token
tokenDelete(null,username,conferenceId,token);
}
}
!!!!
可参考https://blog.csdn.net/qq_38627581/article/details/78854291