国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > .NET > 正文

asp.net下判斷用戶什么時(shí)候離開(kāi),以什么方式離開(kāi)

2020-01-18 01:45:55
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
站點(diǎn)用戶統(tǒng)計(jì)是每一個(gè)站點(diǎn)比有得功能,但是很少有人實(shí)現(xiàn)在線用戶統(tǒng)計(jì)得絕對(duì)精確或者說(shuō)是相對(duì)精確,基于Web得原理,服務(wù)器不會(huì)主動(dòng)知道用戶通過(guò)關(guān)閉瀏覽器離開(kāi)站點(diǎn),這時(shí)候只能依靠服務(wù)器端變量Session得過(guò)期來(lái)判斷用戶是否離開(kāi),但用戶瀏覽器是可以知道自己何時(shí)關(guān)閉得,代碼也非常簡(jiǎn)單 

如下: 

function body_onunload() 



   if(window.event.clientX<0) 

   { 

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

   } 

    else 

    { 

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

    } 


以上代碼就會(huì)判斷用戶是關(guān)閉瀏覽器還是刷新或者導(dǎo)航到其他頁(yè)面了! 


--------------------------------------------------------------------------------------------------- 
下午的時(shí)候,用代碼測(cè)試了一下,主要是利用上面的js函數(shù),結(jié)合ajax技術(shù),由于對(duì)ajax技術(shù)了解的不是很透徹,前后嘗試了三次。 
現(xiàn)將嘗試結(jié)果與大家分享,大家也多給點(diǎn)意見(jiàn) 
首先我嘗試了在ajax方法中訪問(wèn)Application,企圖用Application變量來(lái)記錄在線人數(shù)。嘗試代碼: 
[AjaxPro.AjaxMethod] 
  public int Logoff()  
  {    
       Application["onlineCount"]=Convert.ToInt32(Application["onlineCount"])-1; 
      return      Convert.ToInt32(Application["onlineCount"]); 
  } 
嘗試失敗!估計(jì)是ajax不能訪問(wèn)應(yīng)用程序的靜態(tài)變量和Application變量。第一次使用AjaxPro不知道如何設(shè)置可以訪問(wèn)Session,以前使用的是ajax.dll,設(shè)置成可以讀寫(xiě)Session,嘗試結(jié)果可能發(fā)生改變! 
第二種我嘗試了用文本文件記錄在線人數(shù),仍然失敗! 
第三中,采用數(shù)據(jù)庫(kù)!嘗試成功。 
代碼如下: 
[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; 

  } 
前臺(tái)頁(yè)面縮 


 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()"> 
這樣的話,在對(duì)安全行和及時(shí)性要求比較嚴(yán)格的情礦下,將一個(gè)頁(yè)面設(shè)置為主頁(yè)面,如果該頁(yè)面關(guān)閉,表示用戶已經(jīng)退出。電子郵件系統(tǒng)就可以使用該方法。 
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 海安县| 德阳市| 永丰县| 广宗县| 洞口县| 普兰县| 将乐县| 应用必备| 丰城市| 襄城县| 望奎县| 固安县| 丰都县| 河西区| 蒲城县| 和林格尔县| 涞水县| 天镇县| 肃南| 博白县| 潮州市| 邹城市| 韶关市| 清丰县| 鸡东县| 皋兰县| 铜陵市| 泗水县| 长顺县| 绥芬河市| 巩义市| 望谟县| 宁河县| 邢台市| 阳原县| 承德市| 定日县| 清镇市| 玉门市| 襄垣县| 和平区|