關於關閉IE清空session的總結

關於這個需求我想不管是大項目還是小項目都是必要的,網上問的人也比較多,同樣我也遇到了這樣的需求,查閱了不少這方面的資料。然後通過實踐,總結了一下。
鼠標點擊X窗口關閉IE的同時清空session,最基本的就是處理用戶重複登陸需要用到,我想這個的關鍵在於如何捕捉到關閉IE這個動作,之後再根據自身的需要使用session.invalidate()或者session.removeAttribute( "xxx ")都是水到渠成的事情。
下面我們就重點看看如何捕捉這個動作:
首先現在的系統的頁面結構一般分爲2種,框架的和非框架的。
框架的:
<script language="javaScript">
function removeline(){
 
if(event.clientX<0&&event.clientY<0){
 alert("我進入了removeline方法啦,說明捕捉有效!");
 document.write('<iframe width="100" height="100" src="XXX.jsp"></iframe><OBJECT classid=CLSID:8856F961-340A-11D0-A96B-00C04FD705A2 height=0 id=WebBrowser width=0></OBJECT>');
       document.all.WebBrowser.ExecWB(45,1);
 }
}
</script>
 
然後只需要在frameset裏面調用該方法即可。
<frameset 。。。。。。。。。。。。。 onUnload="removeline();">
      
</frameset>
 
幾點注意之處:if(event.clientX<0&&event.clientY<0)這個條件沒有對alt+F4關閉IE進行捕捉,如果想添加,要改成if((event.clientX<0&&event.clientY<0&&) ||event.altKey)
Removeline方法中的XXX.JSP是你寫具體如何清楚session的頁面。
 
非框架的:
  對於非框架的的處理和框架的會有所不同,實現方法如下;
 <script language="javascript">
     
      function window.onunload(){
      if((window.screenLeft>=10000 && window.screenTop>=10000)||event.altKey)
      {
        alert("識別到關閉IE啦!!!");   
 }
      }
    
      </script>
 
By The Way:最後我想說的是,建議系統使用框架的頁面結構,這樣做的好處很多了,單就權限而言也有不少有利之處。
   首先,爲什麼要清空SESSION呢?清空session肯定是爲了根據session來控制什麼,實現某種判斷,我們所謂的關閉IE時清空session,是指清空服務器端的session,衆所周知,對於客戶端的session,是隨着你關閉IE的同時就自動的銷燬的。因此,這樣以來,如果使用非框架結構,就會帶來一些問題,很簡單的一個例子就是你打開了系統的3個頁面,然後你X掉其中的一個頁面,那麼自然觸發了清空session的方法,所以這時服務器的對應session應該被清除,而你仍然開着的頁面怎麼辦呢。。。。。。。。。。
框架結構的好處就是始終只運行一個頁面,避免了上述問題的產生,當然使用框架的好處還有很多,在這裏就不一一贅述了
   在下水平有限,如有不妥的地方還請大家不吝指教!
 
發佈了46 篇原創文章 · 獲贊 0 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章