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

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

阅读更多

站点用户统计是每一个站点比有得功能,但是很少有人实现在线用户统计得绝对精确或者说是相对精确,基于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 下判断用户离开的方式及其实现 在ASP.NET应用开发中,有时我们需要知道用户何时离开网站或某个页面,并以此来更新在线用户状态、统计数据等。然而,由于Web技术本身的限制,服务器无法直接得知客户端...

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

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

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

    在开发中,我们经常会遇到需要在表单未保存的情况下阻止用户离开页面的场景。一般来说,我们会通过监听路由的变化来实现这一功能。但是,在Vue中,我们可以通过更简单的方法来实现,即使用Vue的`watch`属性来观察...

    易语言API判断鼠标离开窗体

    在本案例中,我们关注的是如何使用易语言API来判断鼠标是否离开了窗体。 易语言是一种基于汉语词汇的编程语言,其设计目标是降低编程的难度,使得非专业程序员也能进行软件开发。在易语言中,API的使用通常需要通过...

    完整版检测鼠标离开事件.e.rar

    在IT领域,鼠标离开事件(Mouse Leave Event)是用户界面编程中的一个重要概念,尤其是在Web开发和桌面应用程序设计中。这个事件通常与鼠标的焦点转移有关,当鼠标指针离开某个特定元素或区域时触发。本资源"完整版...

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

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

    纯JSP+DWR实现三级联动下拉选择菜单 实现无刷新联动 DWR判断用户是否存在 ajax二级联动菜单 DWR操作数据库模拟实现Google搜索效果

    **三、DWR判断用户是否存在** DWR可以方便地进行用户验证。例如,当用户尝试登录时,我们可以使用DWR调用后端的服务检查用户名是否已存在于数据库中。通过在JavaScript中调用DWR接口,我们可以实时得到验证结果,...

    易语言判断鼠标是否移动到某组件上

    在编程领域,尤其是在GUI(图形用户界面)设计中,判断鼠标是否移动到某组件上是一项基本功能。易语言,作为一款中国本土开发的、面向普通用户的编程语言,提供了丰富的库函数来实现这样的功能。本篇将详细介绍如何...

    判断页面是关闭还是刷新的js代码

    在`onunload`之前触发,主要用于询问用户是否确认离开当前页面,或者执行某些清理操作。这个事件允许开发者阻止页面的卸载,例如,在表单未保存的情况下弹出确认对话框。示例代码中,`onbeforeunload`事件调用了`...

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

    为此,JavaScript 提供了 `onunload` 事件,它会在浏览器窗口被关闭或者用户离开当前页面时触发。然而,在实际的应用场景中,我们可能会遇到一个棘手的问题:不论是刷新页面还是真正关闭窗口,`onunload` 事件都会被...

    lotus domino AJAX 判断已经存在用户

    这样当用户离开输入框或输入内容改变时,就会立即进行帐号的可用性检查。 总结来说,Lotus Domino AJAX 判断已存在用户的核心在于前端利用AJAX技术发送请求到服务器,服务器端通过代理进行数据库查询,然后将结果...

    js判断鼠标同时离开两个div的思路及代码

    在讨论如何使用JavaScript来判断鼠标同时离开两个不同的div元素之前,首先需要了解的是,在现代Web开发中,对元素的事件处理是构成用户交互体验的基础。在给定的文件中,我们看到了一个特定的实现思路,该思路关注于...

    判断输入的是否是正数

    在JavaScript中,处理方式类似,但可以直接用`isNaN()`函数来检查是否为数字,然后用`和`&gt;`比较: ```javascript let input = "123"; let num = Number(input); if (!isNaN(num) && num &gt; 0) { console.log("输入...

    判断是否在YY频道

    判断用户是否在特定频道的功能,对于实现一些自动化操作或者数据分析可能非常有用。例如,游戏脚本可能需要根据用户是否在YY频道来触发某些行为,或者数据分析应用可能要统计活跃频道的用户数量。 “判断是否在YY...

    判断浏览器刷新还是关闭

    在网页开发中,判断用户是刷新页面还是关闭页面是一个常见的需求,这有助于我们优化用户体验,进行数据同步,或者实现特定的交互逻辑。本篇将基于标题"判断浏览器刷新还是关闭"来深入探讨这个主题。 首先,我们需要...

    android 判断程序无操作3秒后自动进入图片轮播

    在监听用户的操作时,我们可以重写`Activity`或`View`的`onTouchEvent`方法,通过分析`MotionEvent`来判断用户是否有操作。 接下来是`ViewPager`,这是Android提供的一个用于展示可滑动页面的视图。它常用于实现...

    易语言判断鼠标是否移动到某组件上源码

    你可以根据自己的需求,将此原理应用到其他类型的组件,如文本框、列表框等,以提升用户体验。 在实际编程过程中,还可能需要考虑更多细节,例如处理多个组件的情况,或者在组件上执行特定的操作。但基本的思路就是...

    离开当前页面前使用js判断条件提示是否要离开页面

    当用户离开页面时,会触发这个事件,并且可以执行一个函数,通过这个函数返回的字符串来提示用户。 在介绍的知识点中,我们看到一个具体的实现方法,首先是HTML部分,它定义了一个文本输入框,其ID为"unloads"。接...

Global site tag (gtag.js) - Google Analytics