asp.net下判斷用戶什么時(shí)候離開(kāi),以什么方式離開(kāi)
如下:
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)就可以使用該方法。
相關(guān)文章
asp.net通過(guò)js實(shí)現(xiàn)Cookie創(chuàng)建以及清除Cookie數(shù)組的代碼
asp.net Cookie創(chuàng)建以及清除Cookie數(shù)組2010-03-03讀取XML并綁定至RadioButtonList實(shí)現(xiàn)思路及演示動(dòng)畫(huà)
讀取XML的文檔,可以使用System.Data.DataSet類別中的ReadXml()方法,在aspx網(wǎng)頁(yè)上拉一個(gè)RadioButtonList控件,用來(lái)顯示XML的數(shù)據(jù),接下來(lái),用DataSet去讀取剛才寫(xiě)好的獲取XML文件的屬性,即可完成2013-01-01ASP.NET站點(diǎn)導(dǎo)航應(yīng)用詳解
這篇文章主要內(nèi)容是ASP.NET站點(diǎn)導(dǎo)航,主要包括站點(diǎn)導(dǎo)航以及動(dòng)態(tài)修改內(nèi)存中的站點(diǎn)地圖,感興趣的小伙伴們可以參考一下2015-09-09ASP.NET實(shí)現(xiàn)的簡(jiǎn)單易用文件上傳類
這篇文章主要介紹了ASP.NET實(shí)現(xiàn)的簡(jiǎn)單易用文件上傳類,本文給出實(shí)現(xiàn)代碼和使用方法示例,需要的朋友可以參考下2015-06-06NET Core 3.0 AutoFac內(nèi)置DI替換的新姿勢(shì)分享
這篇文章主要給大家介紹了關(guān)于NET Core 3.0 AutoFac內(nèi)置DI替換的新姿勢(shì),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用NET Core 3.0具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09WeakReference(弱引用)讓GC需要時(shí)回收對(duì)象
我們平常用的都是對(duì)象的強(qiáng)引用,如果有強(qiáng)引用存在,GC是不會(huì)回收對(duì)象的,我們能不能同時(shí)保持對(duì)對(duì)象的引用,而又可以讓GC需要的時(shí)候回收這個(gè)對(duì)象呢?本文將為您詳細(xì)解答,需要了解的朋友可以參考下2012-12-12.Net微信網(wǎng)頁(yè)開(kāi)發(fā)解決用戶在不同公眾號(hào)或在公眾號(hào)、移動(dòng)應(yīng)用之間帳號(hào)統(tǒng)一問(wèn)題
這篇文章主要介紹了.Net微信網(wǎng)頁(yè)開(kāi)發(fā)解決用戶在不同公眾號(hào)或在公眾號(hào)、移動(dòng)應(yīng)用之間帳號(hào)統(tǒng)一問(wèn)題,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09