頁面關閉或返回觸發JS事件,重新整理不觸發

2021-08-26 23:16:59 字數 1650 閱讀 7543

頁面載入時只執行onload

頁面關閉時只執行onunload

頁面重新整理時先執行onbeforeunload,然後onunload,最後onload。

經過驗證我得出的結論是:

## 對於ie,谷歌,360:

- 頁面載入時只執行onload

- 頁面重新整理時,重新整理之前執行onbeforeunload事件,在新頁面即將替換舊頁面時onunload事件,最後onload事件。

- 頁面關閉時,先onbeforeunload事件,再onunload事件。

## 對於火狐:

-頁面重新整理時,只執行onunload;頁面關閉時,只執行onbeforeunload事件

那麼回歸正題,到底怎樣判斷瀏覽器是關閉還是重新整理?我按照網上的各種說法實驗千百遍,都未成功,其中各種說法如下:

window.onbeforeunload = function() //author: meizz

else

}window.onbeforeunload = function() //author: meizz

else

}

function closeopen(event) 

else

}

這些方法都不管用,但是我並沒有放棄,想啊想啊........

按照上面我得出結論,

//對於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為true。20這個值是指關閉按鈕的寬度

var b = n > document.documentelement.scrollwidth-20;

//滑鼠在客戶區內時,window.event.clienty>0;滑鼠在客戶區外時,window.event.clienty<0

if(b && window.event.clienty < 0 || window.event.altkey || window.event.ctrlkey)else if(event.clienty > document.body.clientheight || event.altkey)

js頁面重新整理或關閉beforeunload事件

beforeunload事件在當前頁面關閉或重新整理時呼叫 jquery離開頁面彈出提示 繫結beforeunload事件 window bind beforeunload function 解除繫結,一般放在提交觸發事件中 window unbind beforeunload jquery離開頁面...

js 重新整理和關閉頁面觸發的事件 及操作COOKIE

有個需求是在使用者離開頁面 重新整理或者關閉 時儲存當前的工作狀態。我決定把當前工作狀態存到cooike中.記錄一下js操作cookie和事件響應 function setcookie name,value 讀取cookies function getcookie name 下面是事件監聽 func...

前端js在頁面關閉前觸發事件

功能需求 前端在關閉頁面時觸發事件請求後台進行類似日誌記錄的東西,或者儲存當前頁面某些資料 解決方法 1.使用window.onbeforeunload window.onbeforeunload function 2.使用window.addeventlistener監聽beforeunload事...