亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

基于JavaScript判斷瀏覽器到底是關閉還是刷新(超準確)

2019-11-20 10:38:49
字體:
來源:轉載
供稿:網友

本文是小編總結的一些核心內容,個人感覺對大家有所幫助,具體內容請看下文:

頁面加載時只執行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.clientY<0) {alert("關閉");}else{alert("刷新或離開");}}</script><body onunload="CloseOpen(event)">

..........................

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

按照上面我得出結論,

//對于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");};

服務端代碼(SSH實現):

public void aaaa(){System.out.println(base.getParameter("msg")+",間隔:"+base.getParameter("time"));}

對于if(_gap_time <= 5),此處的5是我預設的,按照客戶端瀏覽器而定,也與客戶端的機器配置有關系,我的機器關閉瀏覽器時onbeforeunload事件與onunload事件的數據間隔不超過2ms,而刷新時的間隔100%大于2ms,因為要訪問服務器。下面貼出我的測試結果:

下面給大家介紹瀏覽器關閉監聽事件,判斷刷新還是關閉

使用onunload或onbeforeunload可以監聽瀏覽器關閉事件,但是無法區分關閉與刷新。以下js代碼可以部分監聽關閉瀏覽器的事件!

//鼠標相對于用戶屏幕的水平位置 - 窗口左上角相對于屏幕左上角的水平位置 = 鼠標在當前窗口上的水平位置var n = window.event.screenX - window.screenLeft;//鼠標在當前窗口內時,n<m,b為false;鼠標在當前窗口外時,n>m,b為true。20這個值是指關閉按鈕的寬度var b = n > document.documentElement.scrollWidth-20;//鼠標在客戶區內時,window.event.clientY>0;鼠標在客戶區外時,window.event.clientY<0if(b && window.event.clientY < 0 || window.event.altKey || window.event.ctrlKey){關閉瀏覽器時你想做的事}else if(event.clientY > document.body.clientHeight || event.altKey){關閉瀏覽器時你想做的事}

這段js能監聽到鼠標點擊瀏覽器關閉按鈕、瀏覽器狀態欄鼠標右鍵彈出菜單中的關閉以及各種快捷鍵。但是雙擊瀏覽器坐上角圖標關閉瀏覽器和關閉標簽頁無法監聽。

以上所述是本文的全部內容,寫的不好還請各位大俠多多提出寶貴意見。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品久久久久久久天堂| 日韩av免费看| 久久99精品久久久久久噜噜| 尤物yw午夜国产精品视频明星| 亚洲成年人在线播放| 中日韩美女免费视频网站在线观看| 亚洲精品综合久久中文字幕| 国产日韩欧美日韩大片| 久久久久久久久久国产精品| 亚洲桃花岛网站| 欧美日韩亚洲高清| 福利视频一区二区| 美女精品视频一区| 91久久精品日日躁夜夜躁国产| 91精品国产高清久久久久久久久| 精品久久中文字幕| 色妞一区二区三区| 亚洲欧美日韩爽爽影院| 国产99久久精品一区二区| 欧美一级电影在线| 亚洲欧美在线看| 91麻豆国产语对白在线观看| 亚洲视频欧美视频| 欧美亚洲在线播放| 国产精品自产拍在线观看| 国产亚洲欧美视频| 国产精品美女久久久久av超清| 高跟丝袜一区二区三区| 中文字幕亚洲图片| 欧美激情videoshd| 91高清免费视频| 国产日韩视频在线观看| 日韩欧美在线国产| 国产婷婷成人久久av免费高清| 久热精品在线视频| 久久精品国产欧美亚洲人人爽| 欧美成人激情在线| 国产中文欧美精品| 亚洲欧美激情四射在线日| 国产精品久久久久久久久久小说| 国产精品久久久久久中文字| 91精品视频观看| 欧美性高潮床叫视频| 午夜美女久久久久爽久久| 久久精品亚洲精品| 日韩av中文字幕在线播放| 日韩在线观看免费| 久久电影一区二区| 亚洲国产精品va| 日韩av在线免费| 精品久久久久人成| 亚洲护士老师的毛茸茸最新章节| 中文字幕综合一区| 成人网在线视频| 日韩欧美视频一区二区三区| 国产日韩欧美日韩大片| 亚洲欧美精品一区| 亚洲精品国产精品自产a区红杏吧| 久久久999精品免费| 国产亚洲人成a一在线v站| 亚洲男人天堂网| 亚洲天堂av高清| 欧美多人爱爱视频网站| 日本老师69xxx| 亚洲深夜福利在线| 亚洲欧美日韩国产中文专区| 亚洲国产日韩精品在线| 亚洲精品www| 91网在线免费观看| 欧美自拍大量在线观看| 一区二区三区回区在观看免费视频| 国产精品成久久久久三级| 国产精品成久久久久三级| 国产精品激情自拍| 欧美日本黄视频| 国产精自产拍久久久久久蜜| 国产亚洲欧美日韩一区二区| 久久久精品视频成人| 欧美成人黄色小视频| 国产成人一区三区| 欧美大片欧美激情性色a∨久久| 亚洲久久久久久久久久久| 国产精品久久国产精品99gif| 国产精品视频免费在线观看| 久久精品国产96久久久香蕉| 九九热r在线视频精品| 日韩欧美在线字幕| 国产精品麻豆va在线播放| 欧美在线性视频| 久久亚洲精品国产亚洲老地址| 久久久久久久91| 国产欧美婷婷中文| 欧美老少做受xxxx高潮| 欧美午夜精品久久久久久人妖| 亚洲深夜福利在线| 欧美俄罗斯性视频| 91久久久久久国产精品| 欧美日韩国产丝袜美女| 国产精品久久久久国产a级| 亚洲第一网站免费视频| 中文字幕亚洲图片| 欧美成人手机在线| 少妇激情综合网| 国产色婷婷国产综合在线理论片a| 亚洲日韩中文字幕| 欧美成人亚洲成人| 欧美日韩第一视频| 精品综合久久久久久97| 亚洲精品国产精品国自产在线| 91精品视频专区| 国产精品精品视频| 亚洲片av在线| 在线观看91久久久久久| 中文综合在线观看| 国产欧美久久久久久| 日韩在线观看你懂的| 国产精品成人久久久久| 91精品国产高清自在线看超| 91精品中国老女人| 欧美又大又硬又粗bbbbb| 国产91精品久| 77777亚洲午夜久久多人| 成人免费在线视频网站| 国产91色在线| 日韩中文字幕视频在线| 久久午夜a级毛片| 国产一区二区三区在线观看视频| 国产不卡一区二区在线播放| 国产精品一区二区三区毛片淫片| 美女扒开尿口让男人操亚洲视频网站| 日韩性生活视频| 自拍偷拍亚洲一区| 国产最新精品视频| 久久777国产线看观看精品| 午夜精品久久久久久久久久久久| 国产精品美女久久| 欧美高清理论片| 成人激情在线播放| 中文字幕在线国产精品| 中文欧美日本在线资源| 人人爽久久涩噜噜噜网站| 日韩hd视频在线观看| 久久91亚洲精品中文字幕奶水| 欧美日韩国产第一页| 久久综合亚洲社区| 成人国产精品色哟哟| 亚洲国产第一页| 日韩中文第一页| 日韩欧美综合在线视频| 色综合久久天天综线观看| 亚洲欧美制服综合另类| 日韩av快播网址| 欧美午夜精品伦理| 亚洲成人性视频| 久久精品国产一区二区电影| 国产日韩欧美综合| 亚洲欧美三级伦理| 欧美成人在线影院| 日韩中文字幕视频在线| 国产精品∨欧美精品v日韩精品| 亚洲第一网站免费视频| 亚洲免费av电影| 97国产精品免费视频| xvideos国产精品|