在做一些關於會員在線的問題時往往我們要根據覽器是否關閉來判斷用戶是否下線然後再從session和application中將此用戶移除
由於浏覽器是無狀態的
在這時候捕捉浏覽器關閉會出現兩種情況
真正的關閉浏覽器 (a
點擊關閉按鈕 b
右擊任務欄關閉 c
按alt+F
關閉)
刷新浏覽器
那如何判斷區分這兩種動作呢?
一
Javascript代碼處理方法
代碼如下:
function window
onbeforeunload()
{
//用戶點擊浏覽器右上角關閉按鈕或是按alt+F
關閉
if(event
clientX>document
body
clientWidth&&event
clientY<
||event
altKey)
{
// alert("點關閉按鈕");
document
getElementById("hiddenForm:hiddenBtn")
click();
// window
event
returnValue="確定要退出本頁嗎?";
}
//用戶點擊任務欄
右鍵關閉
s或是按alt+F
關閉
else if(event
clientY > document
body
clientHeight || event
altKey)
{
// alert("任務欄右擊關閉");
document
getElementById("hiddenForm:hiddenBtn")
click();
// window
event
returnValue="確定要退出本頁嗎?";
}
//其他情況為刷新
else
{
// alert("刷新頁面");
}
}
其中 event
clientX 鼠標光標X坐標
document
body
clientWidth 窗體工作區寬度
event
clientY 鼠標光標Y坐標
event
altKey 是否按下alt鍵
二
事件捕捉方法
代碼如下:
<body scroll="no" onbeforeunload="return CloseEvent();" onunload="UnLoadEvent()" >
</body>
<script language="JavaScript" type="text/javascript">
var DispClose = true;
function CloseEvent()
{
if (DispClose)
{
return "是否離開當前頁面?";
}
}
function UnLoadEvent()
{
DispClose = false;
//在這裡處理關閉頁面前的動作
}
</script>
在頁面卸載之前引發onbeforeunload事件
如果用戶選擇“是”即確定卸載頁面將引發onunload事件
否則返回頁面不做任何操作
From:http://tw.wingwit.com/Article/program/Java/JSP/201311/20460.html