判断用户什么时候离开,以什么方式离开

转载 2006年06月21日 14:29:00

站点用户统计是每一个站点比有得功能,但是很少有人实现在线用户统计得绝对精确或者说是相对精确,基于Web得原理,服务器不会主动知道用户通过关闭浏览器离开站点,这时候只能依靠服务器端变量Session得过期来判断用户是否离开,但用户浏览器是可以知道自己何时关闭得,代码也非常简单

如下:

function body_onunload()

{

   if(window.event.clientX<0)

   {

          alert('the broswer is closing...');

   }

    else

    {

         alert('the user is refreshing or navigating away...);

    }
}

以上代码就会判断用户是关闭浏览器还是刷新或者导航到其他页面了!


---------------------------------------------------------------------------------------------------
下午的时候,用代码测试了一下,主要是利用上面的js函数,结合ajax技术,由于对ajax技术了解的不是很透彻,前后尝试了三次。
现将尝试结果与大家分享,大家也多给点意见
首先我尝试了在ajax方法中访问Application,企图用Application变量来记录在线人数。尝试代码:
[AjaxPro.AjaxMethod]
  public int Logoff()
  {   
       Application["onlineCount"]=Convert.ToInt32(Application["onlineCount"])-1;
      return      Convert.ToInt32(Application["onlineCount"]);
  }
尝试失败!估计是ajax不能访问应用程序的静态变量和Application变量。第一次使用AjaxPro不知道如何设置可以访问Session,以前使用的是ajax.dll,设置成可以读写Session,尝试结果可能发生改变!
第二种我尝试了用文本文件记录在线人数,仍然失败!
第三中,采用数据库!尝试成功。
代码如下:
[AjaxPro.AjaxMethod]
  public int Logoff()
  {   
   SqlConnection conn = new  SqlConnection("server=.;database=test; uid=sa;pwd=123");
   SqlCommand cmd = new SqlCommand("update OnlineCount set num=num-1",conn);
   try
   {
    conn.Open();
    cmd.ExecuteNonQuery();
   }
   catch(Exception ex)
   {
    EventLog.WriteEntry(ex.Source,ex.Message);
   }
   finally
   {
    conn.Close();
   }
   
   cmd = new SqlCommand("select top 1 num from OnlineCount",conn);
   try
   {
    conn.Open();
    return Convert.ToInt32(cmd.ExecuteScalar());
   }
   catch(Exception ex)
   {
    EventLog.WriteEntry(ex.Source,ex.Message);
   }
   finally
   {
    conn.Close();
   }
   return 0;
   
  }
前台页面缩

 1    <script language="javascript">
 2<!--
 3       function leave() 
 4       
 5          alert(window.event.clientX);
 6          if(window.event.clientX<0)
 7          {
 8            WebApplication3.WebForm1.Logoff().value;
 9          }

10       }

11//-->
12        
</script>
13    </HEAD>
14    <body onunload="leave()">

这样的话,在对安全行和及时性要求比较严格的情矿下,将一个页面设置为主页面,如果该页面关闭,表示用户已经退出。电子邮件系统就可以使用该方法。
     

http://jillzhang.cnblogs.com/archive/2006/04/12/373566.aspx

js判断离开页面刷新或关闭的方法

今天在做日新图库的时候遇到个问题,用户上传模块中,上传是用了一个SWFUpload的上传插件,上传是ajax实现   的,假设用户上传了图片,并没有提交图集,而是离开了页面,关闭浏览器或者刷新了页...
  • jinyeweiyang
  • jinyeweiyang
  • 2014年09月28日 11:34
  • 1944

【JavaScript】离开页面前提示

离开页面前的提示不可以用onunload去做,因为它只是兼容IE,你要兼容Google与FireFox就蛋疼了。 而且这个事件还是关闭之后才会触发的。 取而代之可以用onbeforeunload去...
  • yongh701
  • yongh701
  • 2015年03月18日 09:54
  • 2048

JS判断鼠标进入或离开容器的方向做出特殊hover效果

JS判断鼠标进入或离开容器的方向做出特殊hover效果 无意中在uemo的一个子站点看到一个很动感的hover效果,经过简单分析,想必是通过JS判断鼠标进入方向来实现这个hover效果,使父...
  • olinlove1
  • olinlove1
  • 2014年11月18日 14:51
  • 487

html5新功能2—使用HTML5里页面可见性接口判断用户是否正在观看你的页面

长期以来我们一直缺少一个判断用户是否正在浏览某个指定标签页的方法。用户是否去看别的网站了?他们切换回来了么?现在,HTML5里页面可见性接口就提供给了程序员一个方法,让他们使用visibilitych...
  • u011034081
  • u011034081
  • 2015年04月02日 15:39
  • 301

如何处理鼠标离开窗口的消息

首先,WM_MOUSELEAVE是鼠标离开窗口时发出的消息,但是这个消息与普通消息不同,要收到WM_MOUSELEAVE消息必须先调用TrackMouseEvent,并且每调用一次TrackMouse...
  • vigoss331
  • vigoss331
  • 2016年09月23日 14:59
  • 487

jquery实现页面离开时检测当前页面是否被修改,修改则提示

代码如下: //检测表单是否已经修改过 $(window).bind('beforeunload',function(){ if( IsModified() ){ return '您输入的内容尚...
  • qw_xingzhe
  • qw_xingzhe
  • 2015年02月03日 16:41
  • 2965

js离开当前页面时触发的函数

js离开当前页面时触发的函数: window.onbeforeunload=fun() ; function fun(return 'msg';) ; 这样子在浏览器在捕捉到页面即将离开的时候就会弹出...
  • iBenxiaohai123
  • iBenxiaohai123
  • 2017年11月10日 11:38
  • 277

用户离开页面前,提示是否离开此页面(包括浏览器按钮事件)

用户离开页面前,提示是否离开此页面(包括浏览器按钮事件) window.onbeforeunload = function(){ return "您的文章尚未保存!";   } ...
  • feixiangdexin123087
  • feixiangdexin123087
  • 2013年06月18日 14:17
  • 14564

用户为什么离开你?

百度搜索优化指南告诉我们,百度对网站用户体验度是重视程度。什么样的网站会给用户带来不好的体验?你的网站是否因为这些原因而离开呢?各位站长请认真对照检查吧。   导航不明确   ...
  • u013240940
  • u013240940
  • 2013年12月22日 00:36
  • 239

用于离开页面时验证是否有资料修改,如有修改则弹出提示确认框

提示 //用于离开页面时验证是否有资料修改,如有修改则弹出提示确认框 (function () { var E = YAHOO.util.Event; var D = YAH...
  • chs_jdmdr
  • chs_jdmdr
  • 2014年11月27日 23:49
  • 1255
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:判断用户什么时候离开,以什么方式离开
举报原因:
原因补充:

(最多只允许输入30个字)