//框架网页也适用的关闭提示
<script language="javascript">
window.onbeforeunload = function()  //author: meizz
{
  var n = window.event.screenX - window.screenLeft;
  var b = n > document.documentElement.scrollWidth-20;
  if(b && window.event.clientY < 0 || window.event.altKey)
  {
    var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    xmlhttp.open("GET", "sessionEnd.asp", false);
    xmlhttp.send(null);
  }
}
</script>
sessionEnd.asp:
<%
  Session.Abandon()
%>

解决方案 »

  1.   

    <script language="javascript">
    window.onbeforeunload = function() //author: meizz
    {
     var n = window.event.screenX - window.screenLeft;
     var b = n > document.documentElement.scrollWidth-20;
     if(b && window.event.clientY < 0 || window.event.altKey)
     {
      alert("bye bye!"); //这个放在你的网页, 可以判断是否为刷新
     }
    }
    </script>
      

  2.   

    哈,我以为这是没办法去彻底解决的,只能靠session超时自动销毁。因为即使你能在关闭IE浏览器时候的顺利捕获,如果用户没有关浏览器,而是忽然断了网,又靠什么来通知服务器呢?
      

  3.   

    以前发过一个!
    关闭窗口时保存数据或其操作的办法:特点是能判断是刷新还是关闭。  
    <SCRIPT  language="javascript">    
      function  IfWindowClosed()    
      {      
        var  win  =  null;    
        try    
        {    
          window.opener.name  =  "ss";    
          if  (  window.opener.name  !=  "ss"  )    
          {    
            win  =  window.open("quit.asp","","width=100,height=100,left=10000,top=10000");    
            window.setTimeout("window.close();",0);    
          }    
          window.opener.name  =  "";    
        }    
        catch(e)    
        {    
          win  =  window.open("quit.asp","","width=100,height=100,left=10000,top=10000");    
          window.setTimeout("window.close();",0);    
        }    
      }    
          
      window.setInterval("IfWindowClosed()",100);    
      window.setTimeout("window.close();",510);    
    </SCRIPT>    
    ---------------    
     
    用onunload事件打开上面的文件  (打开文件时,可以最小化或做其他处理)  
     
    quit.asp为保存数据的文件,上面的文件用来检测窗口是关闭还是刷新    
     
    测试无问题
      

  4.   

    比较彻底的办法是:后台设置session的超时时间尽量的短,然后页面中用定时器+XMLHTTP
    保持比session的超时时间更短的“心跳”,这样连“忽然断了网”也
    不怕了,呵呵。
    但是还是有个毛病:setTimeout()怕alert()不关啊~~
      

  5.   

    不好意思,上二楼的方法我试过,不太理解意图,不过还是谢谢,你的window.opener.name还是给我了一定起发。
      

  6.   

    我现在在研究多Web应用程序间(具体就是一个IIS的.net应用程序和一个Servlet的J2EE应用程序)的Session共享问题。163.com给了我个案例,他让我看到是有方法实现的,但我一直不清楚具体是怎么实现的,window.opener.name给了我一点感悟。
      

  7.   

    我要捕获窗口关闭,也是为了实现Session共享所用,现也想问问各位大脚知不知道163.com的具体实现??
    我补充一句,163.com不是简单的在Cookie上做了手脚,他上面有一个cgi链接,让我很是有点疑惑。