原理是透過離開頁面行為時間onunload觸發時間去偵測此時的瀏覽器的視窗大小,根據大小由此判斷使用者是刷新,跳轉或是關閉行為程式
程式碼如下
window.onunload = function(){ var a_n = window.event.screenX - window.screenLeft; var a_b = a_n > document.documentElement.scrollWidth-20; if(a_b && window.event.clientY< 0 || window.event.altKey){ alert('关闭页面行为'); }else{ alert('跳转或者刷新页面行为'); } }
用瀏覽器右上角的關閉按鈕時好用,但在選項卡上關閉和在任務欄上關閉,這個方法就不作用了
js標籤只有onloadonunloadonbeforeunload事件,而沒有onclose事件。
不管頁面是關閉還是刷新都會執行onunload事件。
如何捕捉到頁面關閉呢?
頁面載入時只執行onload
頁面關閉時只執行onunload
頁面刷新時先執行onbeforeunload,然後onunload,最後onload。
這樣我們可以在onbeforeunload中加一個標記,在onunload中判斷該標記,即可達到判斷頁面是否真的關閉了
更完整的兼容ff
代碼如下
document.documentElement.scrollWidth-20; if(b && evt.clientY
上面的方法沒辦法判斷多選項卡的瀏覽器,如360,ie8這種,下面再看
代碼如下
function CloseOpen(event) { if(event.clientX<=0 || event.clientY0)&&(event.clientX < document.body.clientWidth)) { s0 += "刷新窗口!"; } else { //获取当前时间 var date=new Date(); //将date设置为过去的时间 alert("关闭网页"); date.setTime(date.getTime()-10000); //将userId这个cookie删除 document.cookie="zhuangtao;expire="+date.toUTCString(); document.cookie="quanxianzifucuan;expire="+date.toUTCString(); document.cookie="quanxian;expire="+date.toUTCString(); s0 += "关闭窗口!"; sw = 1; } } } if (sw == 1) { event.returnValue = ""; } else { currentKeyCode = -1; } }
上面只有不能使用在工作列關閉了,基本上可以滿足我們的要求了。
以上內容就是本文要介紹給大家的javascript判斷網頁是關閉還是刷新,更多相關內容請關注PHP中文網(www.php.cn)!