js監測頁面關閉傳送Ajax請求(瀏覽器關閉登出使用者,清空session)
阿新 • • 發佈:2018-12-02
說明:
需求為頁面關閉傳送一個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>