關於這個需求我想不管是大項目還是小項目都是必要的,網上問的人也比較多,同樣我也遇到了這樣的需求,查閱了不少這方面的資料。然後通過實踐,總結了一下。
鼠標點擊X窗口關閉IE的同時清空session,最基本的就是處理用戶重復登陸需要用到,我想這個的關鍵在於如何捕捉到關閉IE這個動作,之後再根據自身的需要使用session.invalidate()或者session.removeAttribute( "xxx ")都是水到渠成的事情。
下面我們就重點看看如何捕捉這個動作:
首先現在的系統的頁面結構一般分為2種,
框架的和非框架的。框架的:<script language="JavaScript">
function removeline(){
if(event.clientX<0&&event.clIEntY<0){
alert("我進入了removeline方法啦,說明捕捉有效!");
document.write(''<iframe width="100" height="100" src="XXX.JSP"></iframe><OBJECT classid=CLSID:8856F961-340A-11D0-A96B-00C04FD705A2 height=0 id=WebBrowser width=0></OBJECT>'');
document.all.WebBrowser.ExecWB(45,1);
}
}
</script>
然後只需要在frameset裡面調用該方法即可。
<frameset 。。。。。。。。。。。。。 onUnload="removeline();">
</frameset>
幾點注意之處:if(event.clientX<0&&event.clientY<0)這個條件沒有對alt+F4關閉IE進行捕捉,如果想添加,要改成if((event.clientX<0&&event.clIEntY<0&&) ||event.altKey)
Removeline方法中的XXX.JSP是你寫具體如何清楚session的頁面。
非框架的: 對於非框架的的處理和框架的會有所不同,實現方法如下;
<script language="Javascript">
function window.onunload(){
if((window.screenLeft>=10000 && window.screenTop>=10000)||event.altKey)
{
alert("識別到關閉IE啦!!!");
}
}
</script>
By The Way:最後我想說的是,建議系統使用框架的頁面結構,這樣做的好處很多了,單就權限而言也有不少有利之處。