js判斷瀏覽器窗口關閉,js中關閉窗口的方法

本文目錄一覽:

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

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-15 12:13
下一篇 2024-12-15 12:13

相關推薦

  • ArcGIS更改標註位置為中心的方法

    本篇文章將從多個方面詳細闡述如何在ArcGIS中更改標註位置為中心。讓我們一步步來看。 一、禁止標註智能調整 在ArcMap中設置標註智能調整可以自動將標註位置調整到最佳顯示位置。…

    編程 2025-04-29
  • 解決.net 6.0運行閃退的方法

    如果你正在使用.net 6.0開發應用程序,可能會遇到程序閃退的情況。這篇文章將從多個方面為你解決這個問題。 一、代碼問題 代碼問題是導致.net 6.0程序閃退的主要原因之一。首…

    編程 2025-04-29
  • Python創建分配內存的方法

    在python中,我們常常需要創建並分配內存來存儲數據。不同的類型和數據結構可能需要不同的方法來分配內存。本文將從多個方面介紹Python創建分配內存的方法,包括列表、元組、字典、…

    編程 2025-04-29
  • Python中init方法的作用及使用方法

    Python中的init方法是一個類的構造函數,在創建對象時被調用。在本篇文章中,我們將從多個方面詳細討論init方法的作用,使用方法以及注意點。 一、定義init方法 在Pyth…

    編程 2025-04-29
  • 用不同的方法求素數

    素數是指只能被1和自身整除的正整數,如2、3、5、7、11、13等。素數在密碼學、計算機科學、數學、物理等領域都有著廣泛的應用。本文將介紹幾種常見的求素數的方法,包括暴力枚舉法、埃…

    編程 2025-04-29
  • Python中讀入csv文件數據的方法用法介紹

    csv是一種常見的數據格式,通常用於存儲小型數據集。Python作為一種廣泛流行的編程語言,內置了許多操作csv文件的庫。本文將從多個方面詳細介紹Python讀入csv文件的方法。…

    編程 2025-04-29
  • 使用Vue實現前端AES加密並輸出為十六進位的方法

    在前端開發中,數據傳輸的安全性問題十分重要,其中一種保護數據安全的方式是加密。本文將會介紹如何使用Vue框架實現前端AES加密並將加密結果輸出為十六進位。 一、AES加密介紹 AE…

    編程 2025-04-29
  • Python學習筆記:去除字元串最後一個字元的方法

    本文將從多個方面詳細闡述如何通過Python去除字元串最後一個字元,包括使用切片、pop()、刪除、替換等方法來實現。 一、字元串切片 在Python中,可以通過字元串切片的方式來…

    編程 2025-04-29
  • Python如何打開窗口

    Python是一種高級編程語言,它是可擴展性、可移植性和可讀性極佳的語言,被廣泛應用於各個領域。在圖像處理和GUI方面,Python也有很多優秀的庫和工具。本文將介紹如何使用Pyt…

    編程 2025-04-29
  • 用法介紹Python集合update方法

    Python集合(set)update()方法是Python的一種集合操作方法,用於將多個集合合併為一個集合。本篇文章將從以下幾個方面進行詳細闡述: 一、參數的含義和用法 Pyth…

    編程 2025-04-29

發表回復

登錄後才能評論