关于这个需求我想不管是大项目还是小项目都是必要的,网上问的人也比较多,同样我也遇到了这样的需求,查阅了不少这方面的资料。然后通过实践,总结了一下。
鼠 标点击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应该被清除,而你仍然开着的页面怎么办呢。。。。。。。。。。
框架结构的好处就是始终只运行一个页面,避免了上述问题的产生,当然使用框架的好处还有很多,在这里就不一一赘述了
   在下水平有限,如有不妥的地方还请大家不吝指教!