1.建两个页面king.aspx,leave.aspx,和一个Global.asax全局文件
king.aspx页面,在web.config文件中加上:<sessionState mode="InProc" timeout="60"/>,很重要!Session_End只会在mode="InProc"时触发,timeout为session的有效时间!
前台源码:
<iframe name="win" style="width:1px; width:1px;"></iframe>
<script>
function window.onbeforeunload(){
if(document.body.clientWidth-event.clientX<15 && event.clientY<0 || event.altKey){//屏蔽刷新
window.open("leave.aspx","win");
alert('你正在离开...');
}
}
</script>
后台源码:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
Session["wang"] = "王东鑫";
}
}
leave.aspx页面,
后台源码:
protected void Page_Load(object sender, EventArgs e)
{
if(!IsPostBack)
Session.Abandon();//强制取消当前会话,关键所在!
}
Global.asax源码:
void Session_End(object sender, EventArgs e)
{
string str = Session["wang"].ToString();//打断点,试试能不能执行,能不能取道‘王东鑫’?执行结果是可以的!!
}