轉載鏈接:http://www.cnblogs.com/Tim_Liu/archive/2010/11/09/1872596.html
最近寫東西的時候發現需要對瀏覽器的關閉進行監聽,
當用戶關閉的時候需要調用session.invalid();清空session信息,但是仔細一查手冊發現無論是body還是window都沒有onclose事件,之后onload,onunload,beforeunload三個事件
然而三個時間無論是哪個都無法單獨解決單獨監聽瀏覽器關閉的事件,因為在瀏覽器正常運行時先加載的是beforeunload->onunload->onload 但是麻煩的是如果刷新頁面時是執行beforeunload->onunload,如果關閉瀏覽器的話是執行onunload.如果單單監聽onunload的話是無法區別用戶是刷新還是關閉窗口的.所以就要用beforeunload來監測了
當用戶關閉的時候需要調用session.invalid();清空session信息,但是仔細一查手冊發現無論是body還是window都沒有onclose事件,之后onload,onunload,beforeunload三個事件
然而三個時間無論是哪個都無法單獨解決單獨監聽瀏覽器關閉的事件,因為在瀏覽器正常運行時先加載的是beforeunload->onunload->onload 但是麻煩的是如果刷新頁面時是執行beforeunload->onunload,如果關閉瀏覽器的話是執行onunload.如果單單監聽onunload的話是無法區別用戶是刷新還是關閉窗口的.所以就要用beforeunload來監測了
window.οnbefοreunlοad=onclose;function onclose()
{if(event.clientX>document.body.clientWidth&&event.clientY<0||event.altKey){removeSession();//這里添加具體的處理方案}
}
經過測試,IE7瀏覽器可以監測監聽到 alt+f4 或者單擊右上角小叉子退出,但是對于多選項卡瀏覽的用戶貌似無法監聽到這點比較可惜~