电脑爱好者,提供IT资讯信息及各类编程知识文章介绍,欢迎大家来本站学习电脑知识。 最近更新 | 联系我们 RSS订阅本站最新文章
电脑爱好者
站内搜索: 
当前位置:首页>> AJAX技术>>ajax编程:判断用户离开时间及方式:

ajax编程:判断用户离开时间及方式

来源:网络 | 2007-4-25 | (有3967人读过)

站点用户统计是每一个站点比有得功能,但是很少有人实现在线用户统计得绝对精确或者说是相对精确,基于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()">
这样的话,在对安全行和及时性要求比较严格的情矿下,将一个页面设置为主页面,如果该页面关闭,表示用户已经退出。电子邮件系统就可以使用该方法.
AJAX技术热门文章排行
网站赞助商
购买此位置

 

关于我们 | 网站地图 | 文档一览 | 友情链接| 联系我们

Copyright © 2003-2024 电脑爱好者 版权所有 备案号:鲁ICP备09059398号