本文目錄一覽:
javascript判斷網頁是關閉還是刷新
刷新:
//對於ie,谷歌,360:
//頁面載入時只執行onload
//頁面刷新時,刷新之前執行onbeforeunload事件,在新頁面即將替換舊頁面時onunload事件,最後onload事件。
//頁面關閉時,先onbeforeunload事件,再onunload事件。
//對於火狐:
//頁面刷新時,只執行onunload;頁面關閉時,只執行onbeforeunload事件
刷新的時候先onbeforeunload,然後取服務端請求數據,在新頁面即將替換舊頁面時onunload事件,而頁面關閉時,先onbeforeunload事件,再立即onunload事件。那麼在刷新的時候,onbeforeunload與onunload之間的時間肯定比關閉的時候時間長,經過測試確實如此。
關閉:
使用onunload或onbeforeunload可以監聽瀏覽器關閉事件,但是無法區分關閉與刷新。以下js代碼可以部分監聽關閉瀏覽器的事件!
//滑鼠相對於用戶屏幕的水平位置 – 窗口左上角相對於屏幕左上角的水平位置 = 滑鼠在當前窗口上的水平位置
var n = window.event.screenX – window.screenLeft;
//滑鼠在當前窗口內時,nm,b為false;滑鼠在當前窗口外時,nm,b為true。20這個值是指關閉按鈕的寬度
var b = n document.documentElement.scrollWidth-20;
//滑鼠在客戶區內時,window.event.clientY0;滑鼠在客戶區外時,window.event.clientY0
if(b window.event.clientY 0 || window.event.altKey || window.event.ctrlKey){
關閉瀏覽器時你想做的事
}else if(event.clientY document.body.clientHeight || event.altKey){
關閉瀏覽器時你想做的事
}
這段js能監聽到滑鼠點擊瀏覽器關閉按鈕、瀏覽器狀態欄滑鼠右鍵彈出菜單中的關閉以及各種快捷鍵。但是雙擊瀏覽器坐上角圖標關閉瀏覽器和關閉標籤頁無法監聽。
js判斷瀏覽器是否關閉
標籤只有onload\onunload\onbeforeunload事件,而沒有onclose事件。不管頁面是關閉還是刷新都會執行onunload事件。如何捕捉到頁面關閉呢?
頁面載入時只執行onload
頁面關閉時只執行onunload
頁面刷新時先執行onbeforeunload,然後onunload,最後onload。這樣我們可以在onbeforeunload中加一個標記,在onunload中判斷該標記,即可達到判斷頁面是否真的關閉了。
js怎麼判斷瀏覽器 關閉
!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “”
html xmlns=””
head
titleJs智能判斷瀏覽器是關閉還是刷新/title
meta http-equiv=”content-type” content=”text/html;charset=gb2312″
/head
body
關閉或刷新瀏覽器試試!
script language=”javascript”
window.onbeforeunload=function(){
var n=window.event.screenX-window.screenLeft;
var b=ndocument.documentElement.scrollWidth-20;
if(bwindow.event.clientY0||window.event.altKey){
alert(“關閉”);
}else{
alert(“刷新”);
}
}
/script
/body
/html
怎麼用JS判斷瀏覽器刷新還是關閉
頁面載入時只執行onload
頁面關閉時只執行onunload
頁面刷新時先執行onbeforeunload,然後onunload,最後onload。
經過驗證我得出的結論是:
//對於ie,谷歌,360:
//頁面載入時只執行onload
//頁面刷新時,刷新之前執行onbeforeunload事件,在新頁面即將替換舊頁面時onunload事件,最後onload事件。
//頁面關閉時,先onbeforeunload事件,再onunload事件。
//對於火狐:
//頁面刷新時,只執行onunload;頁面關閉時,只執行onbeforeunload事件
那麼回歸正題,到底怎樣判斷瀏覽器是關閉還是刷新?我按照網上的各種說法實驗千百遍,都未成功,其中各種說法如下:
window.onbeforeunload = function() //author: meizz
{
var n = window.event.screenX – window.screenLeft;
var b = n document.documentElement.scrollWidth-20;
if(b window.event.clientY 0 || window.event.altKey)
{
alert(“是關閉而非刷新”);
window.event.returnValue = “”; //這裡可以放置你想做的操作代碼
}else
{
alert(“是刷新而非關閉”);
}
}
window.onbeforeunload = function() //author: meizz
{
var n = window.event.screenX – window.screenLeft;
var b = n document.documentElement.scrollWidth-20;
if(b window.event.clientY 0 || window.event.altKey)
{
alert(“是關閉而非刷新”);
window.event.returnValue = “”; //這裡可以放置你想做的操作代碼
}else
{
alert(“是刷新而非關閉”);
}
}
和
function CloseOpen(event) {
if(event.clientX=0 event.clientY0) {
alert(“關閉”);
}
else
{
alert(“刷新或離開”);
}
}
這些方法都不管用,但是我並沒有放棄,想啊想啊……..
按照上面我得出結論,
//對於ie,谷歌,360:
//頁面載入時只執行onload
//頁面刷新時,刷新之前執行onbeforeunload事件,在新頁面即將替換舊頁面時onunload事件,最後onload事件。
//頁面關閉時,先onbeforeunload事件,再onunload事件。
//對於火狐:
//頁面刷新時,只執行onunload;頁面關閉時,只執行onbeforeunload事件
刷新的時候先onbeforeunload,然後取服務端請求數據,在新頁面即將替換舊頁面時onunload事件,而頁面關閉時,先onbeforeunload事件,再立即onunload事件。那麼在刷新的時候,onbeforeunload與onunload之間的時間肯定比關閉的時候時間長,經過測試確實如此。
貼出我的測試代碼:
var _beforeUnload_time = 0, _gap_time = 0;
var is_fireFox = navigator.userAgent.indexOf(“Firefox”)-1;//是否是火狐瀏覽器
window.onunload = function (){
_gap_time = new Date().getTime() – _beforeUnload_time;
if(_gap_time = 5)
$.post(pathName+”/back/bi!aaaa.s2?t=”+_beforeUnload_time,{msg:”瀏覽器關閉”,time:_gap_time},function(json){},”text”);
else
$.post(pathName+”/back/bi!aaaa.s2?t=”+_beforeUnload_time,{msg:”瀏覽器刷新”,time:_gap_time},function(json){},”text”);
}
window.onbeforeunload = function (){
_beforeUnload_time = new Date().getTime();
if(is_fireFox)//火狐關閉執行
$.post(pathName+”/back/bi!aaaa.s2?t=”+_beforeUnload_time,{msg:”火狐關閉”},function(json){},”text”);
};
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/254836.html