我有一个程序,必须在用户退出时清空session里的东西,
如果用户点退出按钮,完全OK,但如果他把浏览器直接关闭就完蛋了.
而且页面里有一个ocx控件也要求要点退出,在这个控件没关闭之前,其实应该禁止关闭IE的.我现在的问题是:
1.能否在用户关闭浏览器时给个确认框,如果他点否就不让关闭.
2.在关闭时自动向服务器发一条消息,说明浏览器已经关闭.

解决方案 »

  1.   

    <HTML>
    <HEAD>
    <title>test</title>
    </HEAD>
    <body onbeforeunload="RunOnBeforeUnload()" onunload="RunOnUnload()">
    <script language="javascript">
    function RunOnBeforeUnload() {
    window.event.returnValue = '关闭浏览器将退出系统.';
    }
    function RunOnUnload() {
    alert('呵呵~');
    }
    </script>
    </body>
    </HTML>
      

  2.   

    <HTML>
    <HEAD>
    <title>test</title>
    </HEAD>
    <body onbeforeunload="RunOnBeforeUnload()" onunload="RunOnUnload()">
    <script language="javascript">
    function RunOnBeforeUnload() {
    window.event.returnValue = '关闭浏览器将退出系统.';
    }
    function RunOnUnload() {
    alert('呵呵~');
    }
    </script>
    </body>
    </HTML>
    楼上的不全对啊
    那也只是页面表层关闭啊浏览器不支持的概率小呵
      

  3.   

    一般考虑,一定是用页面的脚本代码实现,javascript最常用,也可用别的,如vbscript等!!!具体代码可在网上搜一下,相信楼主一定会有收获!
      

  4.   

    通常不支持js的系统不大多见。
    我给一个设定session时间的方法。
    session.setMaxInactiveInterval(1200);//20分钟后session失效。
      

  5.   

    绝大多数 浏览器都支持js啊!除非你自己去开发个不支持js的浏览器!
      

  6.   

    如果浏览器崩溃了怎么办?或者网络突然断线你让浏览器怎么通知服务器?正确的方法是监听Session的destroy事件来释放资源,靠浏览器事件根本不可行
      

  7.   

    <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)
    {
    window.event.returnValue = ""; 
    }
    }
    </script>
      

  8.   

    谢谢楼上的各位,session监听器早就设了时间是半小时,但我希望能更精确一点.
    wyhlgx(小飞飞)的方法也用过,onbeforeunload这个方法不知道为什么时灵是不灵的,
    onunload到是都会执行,可我要做的不是alert,而是要向服务器发信息,我在页面加载是创建了一个 XMLHttpRequest对象,在关闭时发送代码如下var xmlHttp;
    function createXMLHttpRequest(){
    if(window.ActiveXObject){
    xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
    }else if(window.XMLHttpRequest){
    xmlHttp = new XMLHttpRequest();
    }
    var url="/test/test.do?action=logout";
    xmlHttp.open("post", url, true);
    }

    function logout(){
    xmlHttp.send(null);}可服务器不知道为什么收不到,而且最严重的是每次刷新都会弹出对话框,很烦人
    我目前打算采用的办法是页面每隔5分钟向服务器发一条消息,如果服务器没受到消息就判定用户退出,不知道这个方法可行不,大家给点意见
      

  9.   

    <HTML>
    <HEAD>
    <title>test</title>
    </HEAD>
    <body onbeforeunload="RunOnBeforeUnload()" onunload="RunOnUnload()">
    <script language="javascript">
    function RunOnBeforeUnload() {
    window.event.returnValue = '关闭浏览器将退出系统.';
    }
    function RunOnUnload() {
    alert('呵呵~');
    }
    </script>
    </body>
    </HTML>