说明:
需求为页面关闭发送一个ajax请求,使关闭浏览器及时清空session(浏览器关闭session并不会清空)
网站同时只能一个用户登录,同一账号后登录的用户不能把前一个登录的用户踢下线,有一个问题是前一个用户不点击注销,那么只能等到session超时下一个用户才能登录。下面代码主要就是解决这个问题。
但是,下面代码只能监测一个页面的关闭而不能监测整个浏览器的关闭。这个问题目前还没有解决,还望各位大神给出解决方案。
<script src="static/js/jquery-3.3.1.js" type="text/javascript"></script>
<script type="text/javascript">
function logout() {
var logoutURL = "/logout"; //用于注销用户的url
if (logoutURL == "")
return;
var userAgent = navigator.userAgent.toLowerCase();
//firefox在处理js时的安全级别较高,很多IE、Chrome中js可以使用的权限在Friefox中被限制
if (userAgent.indexOf("msie") > -1) { //IE
$.ajax({
url : logoutURL,
crossDomain : true,//crossDomain设置为true是为了解决跨域访问问题
async : false,
dataType : "jsonp"//dataType:"jsonp"这个属性也是为解决跨域访问问题,和crossDomain配合使用
});
} else { //FireFox Chrome
$.ajax({
url : logoutURL,
async : false
});
}
}
//页面刷新之前执行
window.onbeforeunload = function() {
logout();
}
//在onbeforeunload后执行
/* window.onunload = function(){
logout();
} */
</script>