1. 程式人生 > >js監測頁面關閉傳送Ajax請求(瀏覽器關閉登出使用者,清空session)

js監測頁面關閉傳送Ajax請求(瀏覽器關閉登出使用者,清空session)

說明:

需求為頁面關閉傳送一個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>