`
greennetboy
  • 浏览: 67788 次
文章分类
社区版块
存档分类
最新评论

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

阅读更多

站点用户统计是每一个站点比有得功能,但是很少有人实现在线用户统计得绝对精确或者说是相对精确,基于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()">

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



jillzhang 2006-04-12 19:21 发表评论
分享到:
评论

相关推荐

    asp.net下判断用户什么时候离开,以什么方式离开

    asp.net下判断用户什么时候离开,以什么方式离开

    js实现用户离开页面前提示是否离开此页面的方法(包括浏览器按钮事件)

    本文实例讲述了js实现用户离开页面前提示是否离开此页面的方法(包括浏览器按钮事件)。分享给大家供大家参考。具体如下: 用户离开页面前,提示是否离开此页面(包括浏览器按钮事件) [removed] [removed] = ...

    判断用户的在线状态 onbeforeunload事件

    获得用户登陆状态不用说了,判断离开的话就有一点问题了,如果说用户都是按照设计者的规定触发退出事件离开的话那就没什么难度了,但是用户的离开方式多种多样,怎么在用户非法离开的时候即时的判断离开呢?...

    vue实现表单未编辑或未保存离开弹窗提示功能

    主要介绍了vue实现表单未编辑或未保存离开弹窗提示功能,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

    离开页面时检测表单元素是否被修改,提示保存的js代码

    离开页面时,检测表单元素是否被修改,然后给出提示.防止用户错失修改的机会,提高用户体验。

    操作系统判断题.doc

    (× ) ( × )1、进程的互斥和同步总是因相互制约而同时引起 ( × )2、操作系统"生成"是可以按用户要求任意装配成各种应用核心 ( × )3、多用户操作系统离开了多终端硬件支持无法使用。 ( × )4、作业同步...

    会员注册代码(瞬间判断用户名是否可用)

    本程序主要实现的是用户填写完用户名,当鼠标离开填写框后,自动判断用户名的合法性(主要包括用户名是否为空,数据库中是否已有用户名)。主要是实现数据库判断这方面。vs2008+sql2008下开发。功能简单,但作用很大...

    ASP.NET2.0-防止同一用户同时登陆

    防止同一用户同时登陆,首页应该记录在线用户的信息(这里与用户名为例),然后判断正在登陆的用户里面是否已存在。在这里使用一个cache存放已经登陆的用户名,但是还有一个问题就是要知道用户是什么时候离开系统的呢?

    js 实现在离开页面时提醒未保存的信息(减少用户重复操作)

    Javascript代码 代码如下: //在离开页面时判断是否有未保存的输入值 var hasSaved = false;//是否有输入的内容未保存标志,初始值为false function CheckUnsave(){ if(hasSaved==false){ alert&#40;“您上传的东西...

    飘易多用户日记本(蓝色幻想) v1.5

    特点: 1、简单易用,界面... 8、用户登陆改用Cookies判断,如果你是公网用户,离开时请退出管理界面。 9、每篇日记都可以独立地统计浏览人气。 10、1.5版增加了对公开日记发表回复评论的功能,从而增加了互动效果。

    判断浏览器是刷新还是关闭窗口

    当浏览器退出时会触发onunload事件,因此我们可以使用onunload事件做一些在页面关闭时要执行的操作,如提示用户信息等。但或许在实际应用中我们都发现一个问题,刷新浏览器同样会触发onunload事件,也就是只要是离开...

    JavaScript中判断页面关闭、页面刷新的实现代码

    今天由于项目需要判断用户离开页面时要判断用户的行为是关闭还是刷新 虽然没有直接的方法,但通过一定的技巧也能做到 不得不感叹JavaScript的强大!! 请看一下代码: 代码如下: [removed] = function(){   var a...

    捐助网站评价

    应实现的效果:离开及判断数据库中用户是否存在 , 在登录中判断用户对应的密码是否正确 不正确弹出信息 应有密码找回超连接,进入个人空间 (对自己个人信息完善、已经发布的信息修改和完善) (3)个人信息完善...

    javascript判断网页是关闭还是刷新

    本篇文章给大家介绍js判断网页是关闭还是刷新,实现原理就是通过离开页面行为时间onunload触发时间去检测此时的浏览器的窗口大小,根据大小由此判断用户是刷新,跳转或是关闭行为程序,需要的朋友可以参考下本

    监控用户是否关闭浏览器的js代码

    BS系统一个非常烦人的地方是不知道用户什么时候关闭浏览器离开系统.这里,我们采用onbeforeunload参数监控用户是否关闭浏览器.

    会员注册代码(瞬间判断用户名是否可用数据库部分)

    本程序主要实现的是用户填写完用户名,当鼠标离开填写框后,自动判断用户名的合法性(主要包括用户名是否为空,数据库中是否已有用户名)。主要是实现数据库判断这方面。vs2008+sql2008下开发。功能简

    vue如何在用户要关闭当前网页时弹出提示的实现

    本文介绍了vue如何在用户要关闭当前网页时弹出提示的实现,分享给大家,具体如下: 效果如下图 正常 js 页面处理方式 [removed] = function (e) { e = e || window.event; // 兼容IE8和Firefox 4之前的版本 if ...

Global site tag (gtag.js) - Google Analytics