>

基于JavaScript判断浏览器到底是关闭还是刷新

- 编辑:正版管家婆马报彩图 -

基于JavaScript判断浏览器到底是关闭还是刷新

正文是小编总括的有的主题内容,个人感到对大家有所帮忙,具体内容请看下文:

基于JavaScript剖断浏览器到底是关门可能刷新(超正确),javascript浏览器

本文是小编总计的有的主旨内容,个人以为对大家具有扶助,具体内容请看下文:

页面加载时只举行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,而刷新时的间隔百分百凌驾2ms,因为要访问服务器。下边贴出作者的测试结果:

图片 1

上边给我们介绍浏览器关闭监听事件,判别刷新照旧关闭

行使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<0
if(b && window.event.clientY < 0 || window.event.altKey || window.event.ctrlKey){
关闭浏览器时你想做的事
}else if(event.clientY > document.body.clientHeight || event.altKey){
关闭浏览器时你想做的事
}

这段js能监听到鼠标点击浏览器关闭按键、浏览器状态栏鼠标右键弹出美食做法中的关闭以及各类飞快键。然而双击浏览器坐上角Logo关闭浏览器和破产标签页不可能监听。

以上所述是本文的全体内容,写的不得了还请各位英豪多多提出宝贵意见。

页面加载时只举行onload
页面关闭时只进行onunload
页面刷新时先实践onbeforeunload,然后onunload,最终onload。

你只怕感兴趣的稿子:

  • Js智能判定浏览器是关闭也许刷新的代码
  • js决断横竖屏及禁止浏览器滑动条示例
  • javascript获得和判别浏览器窗口、荧屏、网页的莫斯中国科学技术大学学、宽度等
  • js监察和控制IE火狐浏览器关闭、刷新、回降、前进事件
  • 一段特别轻巧的js决断浏览器的基业
  • JS辨别访问浏览器判别是android照旧ios系统
  • js/jquery决断浏览器的章程小结
  • JS推断浏览器是或不是援助某二个CSS3属性的方式
  • 包装好的js推断操作系统与浏览器代码分享
  • 用js推断是还是不是为360浏览器的完毕代码
  • js判别浏览器版本以及浏览器内核的议程
  • JS推断是不是360平安浏览器极速内核的不二等秘书诀

本文是小编计算的部分焦点内容,个人以为对大家有所支持,具体内...

因而验证自身得出的下结论是:

//对于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,因为要访谈服务器。上边贴出笔者的测量检验结果:

图片 2

上面给我们介绍浏览器关闭监听事件,判定刷新如故关闭

运用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<0
if(b && window.event.clientY < 0 || window.event.altKey || window.event.ctrlKey){
关闭浏览器时你想做的事
}else if(event.clientY > document.body.clientHeight || event.altKey){
关闭浏览器时你想做的事
}

这段js能监听到鼠标点击浏览器关闭开关、浏览器状态栏鼠标右键弹出美食指南中的关闭以及种种神速键。不过双击浏览器坐上角Logo关闭浏览器和关闭标签页无法监听。

上述所述是本文的全体内容,写的倒霉还请各位英雄多多建议宝贵意见。

您恐怕感兴趣的文章:

  • JavaScript 反应计时器SetTimeout之定期刷新窗口和关闭窗口(代码超轻松)
  • javascript决断网页是停业恐怕刷新
  • js监控IE火狐浏览器关闭、刷新、回降、前进事件
  • js关闭模态窗口刷新父页面或跳转页面
  • js关闭子窗体刷新父窗体完毕格局
  • 用js判定页面刷新或关闭的方式(onbeforeunload与onunload事件)
  • Js智能决断浏览器是倒闭或然刷新的代码
  • javascript 幸免刷新,后退,关闭
  • 看清页面是关门或许刷新的js代码
  • javascript监听页面刷新和页面关闭事件措施详解

本文由关于计算机发布,转载请注明来源:基于JavaScript判断浏览器到底是关闭还是刷新