直接点X关闭浏览器,或者突然断电的情况下,怎么获得下线时间,在线等!急急急.........

解决方案 »

  1.   

    关闭浏览器你可以<body onUnload="onclose()" > 然后在onclose里用AJAX和服务端传消息来实现,但是这个事件刷新的时候
    也会触发,你需要进行判断,断电无法弄!
      

  2.   


    <body onunload="alert('The onunload event was triggered')">
      

  3.   

    在global文件里,试试写session_end事件的处理代码
      

  4.   

    如果浏览器是报错关闭或者跟楼主说的一样, 突然断电, 楼上两位这个办法是接收不到的.保险的做法是既要用楼上两位的办法. 也要用服务端的session_End事件.或者你可以就用楼上两位的办法, 对于接收不到下线消息的情况, 你定义为非正常关闭. 也就是说比如说从上线开始到下线,超过了24小时, 一律视为非正常关闭. 
      

  5.   


    function meizzToday() //Today 
    {
    var meizzTheYear = new Date().getFullYear();
    var meizzTheMonth = new Date().getMonth()+1;
    var meizzTheDate = new Date().getDate();
    var meizzTheHour = new Date().getHours();
    var meizzTheMinute = new Date().getMinutes();
    var meizzTheSecond = new Date().getSeconds();
    var meizzTheSecond = new Date().getSeconds();
        var time="";
    if (meizzTheMonth<10 && meizzTheMonth.length<2) //格式化成两位数字
    {
    meizzTheMonth="0"+meizzTheMonth;
    }
    if (meizzTheDate<10 && meizzTheDate.length<2) //格式化成两位数字
    {
    meizzTheDate="0"+meizzTheDate;
    }
    time= meizzTheYear + "-" + meizzTheMonth + "-" + 
    meizzTheDate + " " + meizzTheHour + ":" + 
    meizzTheMinute + ":" + meizzTheSecond;  alert(time);
    }<body onunload="meizzToday()">
      

  6.   

    如果是断电用onunload确实是获取不了,还是得用Session_End
      

  7.   

    掉线无法知道下线的时间只能用session_end
      

  8.   

    用session_end直接关闭X,程序不会运行到Session_end来
      

  9.   

    如果你是一个产品经理(而不是普通的程序员),那么web开发中“获得下线时间”这个任务定义如果以你的那种方式定义就会浪费很多时间和开发费,因为它不是从实际需求出发。在web开发中,获得下线时间的基础是:如果用户在浏览器地址栏或者通过其它任意方式导航到别的网站,例如我在当前这个页面操作之后直接在地址栏上打入地址访问淘宝网站去了,只要这样操作之后不出1分钟,网站后台就应该可以反映出此用户下线了。这有这样,才是通用的(可以处理很多情况的)用户在线/离线检测机制。这有两个条件:一方面,不是什么点叉子管理浏览器,跟浏览器没有关系,只要是不访问服务器一定时间就自动判断为下线了;另一个条件是应该在用户下线1(或者最多2)分钟内就及时反映用户下线,而不是等到几十分钟以后。重新组织你的需求描述,做出的东西会更通用,较少浪费时间。
      

  10.   

    既然你觉得你的定义很有效,那我问你:我打开一个页面后,放在那里,持续一天什么都不干,你算我离线还是在线? 根本问题要看网站需求了。A)如果网站要求此种情形应该算下线,只有两个方法:1)服务端设置session期限,只要客户端没有触发刷新服务端session,那么session过期后就下线了;2)或者,不用session, 但在客户端用ajax定时发送数据到服务端,一旦服务端收不到定时ajax信息,也就下线了。  B)如果网站要求此种情形不应该算下线,那么就不能使用session,而只能用上述的客户端定时ajax。 
      

  11.   

    补充:ajax不一定要做成定时的,可以在客户端跟服务端交互数据时才ajax刷新状态
      

  12.   

    B)如果网站要求此种情形不应该算下线,那么 1)session不设过期,2)客户端定时ajax刷新在线状态,或者等客户端跟服务端交互数据时ajax刷新在线状态。