之前有个同志写了关于这方面的文章,他是在body里面用onbeforeunload事件,如果大家用试试,就知道有什么问题了。其实onbeforeunload事件理论上是可行的,但实际系统中,会出很多问题。因为它是在操作页面变化后就会触发的,比如在操作页面基础上弹出一个窗口,都会触发。
废话少说,进入正题:
其实这个问题很简单,就用body里的onunload来扑捉浏览器右上角关闭按钮。下面是我举个例子:
系统主页面main.aspx的相关代码:
<SCRIPT language="javascript">
function unload()
{
window.open("CloseWin.aspx","close");
}
</script>
<body leftMargin="0" topMargin="0"  onunload="unload()">
</body>CloseWin.aspx页面只需在CloseWin.aspx.cs下面写如下代码:
private void Page_Load(object sender, System.EventArgs e)
{
if(CurrentlyUser!=null)
onlineMrg.DeleteOnLineUserByUser(CurrentlyUser.ID);
Response.Write("<script language=javascript>window.close();</script>");
}
说明:CurrentlyUser是当前用户,onlineMrg.DeleteOnLineUserByUser(CurrentlyUser.ID)这句是删除当前用户信息。如果你只是想删除Session,就直接在里面写Session.Abandon(); Session.Clear();就可以了,我已测试N次了,是可行的,不会有onbeforeunload的问题。小弟学asp.net半年,也不知道该文章是不是很幼稚,不过希望能帮到需要的朋友。:)