最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間:2016年02月01日 10:36:39   作者:dslzc921029  
這篇文章主要介紹了基于JavaScript判斷瀏覽器到底是關(guān)閉還是刷新(超準(zhǔn)確)的相關(guān)資料,需要的朋友可以參考下

本文是小編總結(jié)的一些核心內(nèi)容,個(gè)人感覺(jué)對(duì)大家有所幫助,具體內(nèi)容請(qǐng)看下文:

頁(yè)面加載時(shí)只執(zhí)行onload
頁(yè)面關(guān)閉時(shí)只執(zhí)行onunload
頁(yè)面刷新時(shí)先執(zhí)行onbeforeunload,然后onunload,最后onload。

經(jīng)過(guò)驗(yàn)證我得出的結(jié)論是:

//對(duì)于ie,谷歌,360:

//頁(yè)面加載時(shí)只執(zhí)行onload
//頁(yè)面刷新時(shí),刷新之前執(zhí)行onbeforeunload事件,在新頁(yè)面即將替換舊頁(yè)面時(shí)onunload事件,最后onload事件。
//頁(yè)面關(guān)閉時(shí),先onbeforeunload事件,再onunload事件。

//對(duì)于火狐:

//頁(yè)面刷新時(shí),只執(zhí)行onunload;頁(yè)面關(guān)閉時(shí),只執(zhí)行onbeforeunload事件
那么回歸正題,到底怎樣判斷瀏覽器是關(guān)閉還是刷新?我按照網(wǎng)上的各種說(shuō)法實(shí)驗(yàn)千百遍,都未成功,其中各種說(shuō)法如下:

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("是關(guān)閉而非刷新"); 
window.event.returnValue = ""; //這里可以放置你想做的操作代碼 
}else
{ 
alert("是刷新而非關(guān)閉"); 
} 
} 
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("是關(guān)閉而非刷新"); 
window.event.returnValue = ""; //這里可以放置你想做的操作代碼 
}else
{ 
alert("是刷新而非關(guān)閉"); 
} 
}

function CloseOpen(event) {
if(event.clientX<=0 && event.clientY<0) {
alert("關(guān)閉");
}
else
{
alert("刷新或離開(kāi)");
}
}
</script>
<body onunload="CloseOpen(event)">

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

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

按照上面我得出結(jié)論,

//對(duì)于ie,谷歌,360:

//頁(yè)面加載時(shí)只執(zhí)行onload
//頁(yè)面刷新時(shí),刷新之前執(zhí)行onbeforeunload事件,在新頁(yè)面即將替換舊頁(yè)面時(shí)onunload事件,最后onload事件。
//頁(yè)面關(guān)閉時(shí),先onbeforeunload事件,再onunload事件。

//對(duì)于火狐:

//頁(yè)面刷新時(shí),只執(zhí)行onunload;頁(yè)面關(guān)閉時(shí),只執(zhí)行onbeforeunload事件
刷新的時(shí)候先onbeforeunload,然后取服務(wù)端請(qǐng)求數(shù)據(jù),在新頁(yè)面即將替換舊頁(yè)面時(shí)onunload事件,而頁(yè)面關(guān)閉時(shí),先onbeforeunload事件,再立即onunload事件。那么在刷新的時(shí)候,onbeforeunload與onunload之間的時(shí)間肯定比關(guān)閉的時(shí)候時(shí)間長(zhǎng),經(jīng)過(guò)測(cè)試確實(shí)如此。

貼出我的測(cè)試代碼:

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:"瀏覽器關(guān)閉",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)//火狐關(guān)閉執(zhí)行
$.post(pathName+"/back/bi!aaaa.s2?t="+_beforeUnload_time,{msg:"火狐關(guān)閉"},function(json){},"text");
};

服務(wù)端代碼(SSH實(shí)現(xiàn)):

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

對(duì)于if(_gap_time <= 5),此處的5是我預(yù)設(shè)的,按照客戶端瀏覽器而定,也與客戶端的機(jī)器配置有關(guān)系,我的機(jī)器關(guān)閉瀏覽器時(shí)onbeforeunload事件與onunload事件的數(shù)據(jù)間隔不超過(guò)2ms,而刷新時(shí)的間隔100%大于2ms,因?yàn)橐L問(wèn)服務(wù)器。下面貼出我的測(cè)試結(jié)果:

下面給大家介紹瀏覽器關(guān)閉監(jiān)聽(tīng)事件,判斷刷新還是關(guān)閉

使用onunload或onbeforeunload可以監(jiān)聽(tīng)瀏覽器關(guān)閉事件,但是無(wú)法區(qū)分關(guān)閉與刷新。以下js代碼可以部分監(jiān)聽(tīng)關(guān)閉瀏覽器的事件!

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

這段js能監(jiān)聽(tīng)到鼠標(biāo)點(diǎn)擊瀏覽器關(guān)閉按鈕、瀏覽器狀態(tài)欄鼠標(biāo)右鍵彈出菜單中的關(guān)閉以及各種快捷鍵。但是雙擊瀏覽器坐上角圖標(biāo)關(guān)閉瀏覽器和關(guān)閉標(biāo)簽頁(yè)無(wú)法監(jiān)聽(tīng)。

以上所述是本文的全部?jī)?nèi)容,寫(xiě)的不好還請(qǐng)各位大俠多多提出寶貴意見(jiàn)。

相關(guān)文章

最新評(píng)論

桃园县| 西平县| 娱乐| 张掖市| 淮北市| 白水县| 枣强县| 南溪县| 博乐市| 文安县| 湖州市| 沂源县| 青河县| 延川县| 河源市| 遵义县| 思茅市| 台中县| 略阳县| 双峰县| 神农架林区| 察哈| SHOW| 磴口县| 定结县| 合阳县| 光泽县| 蒙城县| 漠河县| 高碑店市| 贡山| 内丘县| 定边县| 新建县| 黔西县| 天台县| 民权县| 林甸县| 会同县| 杨浦区| 拉萨市|