当用户点击浏览器右上角的“关闭”按钮时,
如何在第一时间将关闭信息提交给服务器获知。
服务器可进行一些操作,比如打印一个log信息等。希望能给个好的思路或灵感,
在下将不胜感激。

解决方案 »

  1.   

    鉴于http为无状态协议,浏览器的关闭原则上服务器是不能获知的。
    不知道楼主为什么一定要获知,描述一下需求或许对你的问题解决有帮助。
    比如如果你想在关闭某个叶面时解锁,那么在关闭时可以用js提示一下,
    也可以直接发解锁请求。
    单纯所有叶面都要处理的情况我认为是没有的。
    log信息一般也不需要记录这些
      

  2.   

    可以用onunload的事件吧。不过能不能提交到后台,需要验证一下,另外要排除刷新的情况。
      

  3.   

    <HTML>
    <HEAD>
    <TITLE>xxx</TITLE>
    <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=GBK">
    <script>
      //当点击浏览器的关闭按钮时,退出系统,并清除session,修改登陆标识,等等,当然也要排除刷新情况,哈哈
      function exitSystem(){
    alert("确认关闭xxx系统吗");
        //location.href="xxx.do";//此处注释掉了,根据具体情况修改
      }
    </script>
    </HEAD>
    <BODY onbeforeunload="exitSystem()">
    啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊
    </BODY>
    </HTML>
      

  4.   

    HTML code<HTML>
    <HEAD>
    <TITLE>xxx</TITLE>
    <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=GBK">
    <script>
      //当点击浏览器的关闭按钮时,退出系统,并清除session,修改登陆标识,等等,当然也要排除刷新情况,哈哈
      function exitSystem(){
        var flag=confirm("确认关闭xxx系统吗");//可以判断用户选择的是什么
         if(flag)
        
        //location.href="xxx.do";//此处注释掉了,根据具体情况修改
      }
    </script>
    </HEAD>
    <BODY onbeforeunload="exitSys…
    [/Quote]
      

  5.   

    最好不用要unload事件,并不是不起作用,是并不准确,还是设置超时比较好。
      

  6.   

    LZ你基本上可以放弃这个想法了 
    除非你限制用户必须使用某种浏览器 如IE 那样就可以达到你的目的
    <script language=javascript>  
       function window.onbeforeunload()  
       {  
       if(event.clientX>document.body.clientWidth&&event.clientY<0||event.altKey||event.ctrlKey)  
       {          alert('关闭');  
        }  
       else{  
            alert("刷新");  
       }  
       }  
       </script>
      

  7.   

    isClientConnected
    详情请看:
    http://blog.joycode.com/ghj/archive/2008/07/23/115199.aspx
      

  8.   

    万一从任务管理器中结束进程呢?或者死机重启了?呵呵。我觉得应当监听session,并将session的失效时间设置为适当的时间。
      

  9.   

    如果大家有用163的话应该有经验,每次关邮箱的时候都会弹一个广告,我估计网易是使用js做的,楼主也可以试试使用js在用户关掉网页的时候发送一个请求到服务器。但是并不如保证能够发送成功,像楼上有人说的,会有死机啦,进程结束啦,这些情况的。
    或者可以让页面每隔一小段时间给服务器发送一个请求,当超过多长时间服务器没有收到该用户的请求的时候,可以断定用户把这个网页关了。但如果这样的话,不能满足楼主说的第一时间了,不过当用户出现死机或者结束进程的话,还是可以知道网页被关了的。
      

  10.   

    提供一个安全退出按钮JAVA阵营     QQ群   68575630
      

  11.   

    谢谢大家的积极发言
    你们的想法和思想
    都使我备受鼓舞
    现在问题已经解决
    就是像上面兄弟们说的
    onunlaod和onbeforeunload都不能做到
    折中的办法就是使用监听器
    并把session设置为一个适当的时间
    也许还有更好的方法
    我将在不断的探索中去发现
    希望有了真正的解决办法
    能够与大家共享