宝哥软件园

基于JavaScript判断浏览器是关闭还是刷新(超准)

编辑:宝哥软件园 来源:互联网 时间:2021-09-17

本文是边肖总结的一些核心内容。个人认为对大家都有帮助。具体内容见下文:

加载页面时只执行onload,关闭页面时执行onload,页面刷新时先执行onload,再执行onunload,最后执行onload。

经过核实,我得出结论:

//对于ie,谷歌,360:

//在页面加载期间只执行onload。//页面刷新时,刷新前执行onbeforeunload事件,新页面即将替换旧页面时执行onnload事件,最后执行onload事件。//当页面关闭时,首先是onbeforeunload事件,然后是onunload事件。

//对于火狐:

//页面刷新时,只加载onunload被执行;当页面关闭时,只执行onbeforeunload事件。那么,如何判断浏览器是关闭还是刷新呢?我根据网上的各种说法实验了上千次,都没有成功。其中,各种说法如下:

window . onbeforeunload=function()//author : meizz { var n=window . event . screenx-window . screenleft;var b=n document . document element . scrollwidth-20;if(b window . event . client 0 | | window . event . altkey){ alert('关闭而不是刷新');window . event . return value=' ';//可以把想做的操作代码放在这里}else{ alert('刷新而不是关闭');} } window . onbeforeunload=function()//author : meizz { var n=window . event . screenx-window . screenleft;var b=n document . document element . scrollwidth-20;if(b window . event . client 0 | | window . event . altkey){ alert('关闭而不是刷新');window . event . return value=' ';//可以把想做的操作代码放在这里}else{ alert('刷新而不是关闭');}}和。

关闭打开(事件){if(事件。clientx=0event。client 0){ alert(' close ');}else{alert('刷新或离开');} }/script body on nload=' closepen(事件)'....

这些方法都没有奏效,但我没有放弃,思考了又思考。.

根据我以上结论,

//对于ie,谷歌,360:

//在页面加载期间只执行onload。//页面刷新时,刷新前执行onbeforeunload事件,新页面即将替换旧页面时执行onnload事件,最后执行onload事件。//当页面关闭时,首先是onbeforeunload事件,然后是onunload事件。

//对于火狐:

//页面刷新时,只加载onunload被执行;当页面关闭时,将只执行onbeforeunload事件。刷新时,首先调用onbeforeunload事件,然后获取服务器请求的数据。当新页面将要替换旧页面时,将首先执行onbeforeunload事件,然后在页面关闭时立即执行。然后,刷新时,onbeforeunload和onunload之间的时间必须比关闭时长,测试后也是如此。

发布我的测试代码:

var _beforeUnload_time=0,_ gap _ time=0;var is _ FireFox=navigator . userAGENT . indexof(' FireFox ')-1;//是Firefox浏览器窗口。onunload=function(){ _ gap _ time=new date()。get time()-_ before unload _ time;if(_gap_time=5) $。post(PathNAmE/back/bi!aaaa.s2?T=' _ beforeunload _ time,{msg: '浏览器关闭',time3360 _ gap _ time},函数(JSON) {},' text ';else $。post(PathNAmE/back/bi!aaaa.s2?T=' _ beforeunload _ time,{msg: '浏览器刷新',time3360 _ gap _ time},函数(JSON) {},' text ';} window . onbeforeunload=function(){ _ beforeUnload _ time=new Date()。getTime();If(is_fireFox)//Firefox关闭并执行$。post(PathNAmE/back/bi!aaaa.s2?T=' _ beforeunload _ time,{msg:' Firefox closed' },function(json){},' text ');};服务器代码(SSH实现):

公共空间AAAA(){系统。out . println(base . getparameter(' msg ')',interval:' base . getparameter(' time '));}对于if(_gap_time=5),这里的5是我预设的,具体取决于客户端浏览器,也和客户端的机器配置有关。当我的机器关闭浏览器时,onbeforeunload事件和onunload事件之间的数据间隔不超过2毫秒,而刷新期间的间隔100%大于2毫秒,因为需要访问服务器。在下面发布我的测试结果:

让我们介绍一下关闭监控事件的浏览器,并决定是刷新还是关闭它。

使用onunload或onbeforeunload侦听浏览器关闭事件,但无法区分关闭和刷新。下面的js代码可以部分监听关闭浏览器的事件!

//鼠标相对于用户屏幕的水平位置-窗口左上角相对于屏幕左上角的水平位置=鼠标在当前窗口上的水平位置var n=window . event . screenx-window . screenleft;//当鼠标在当前窗口时,nm、b为假;当鼠标在当前窗口外时,nm,b为真。20这个值指的是关闭按钮var b=n document . document element . scroll width-20的宽度;//当鼠标在客户区时,window . event . client 0;当鼠标在客户端区域外时,window . event . client 0 if(b window . event . client 0 | | window . event . altkey | | window . event . ctrl key){关闭浏览器时要做什么}。Elseif(事件。client document . body . client height | | event . altkey){关闭浏览器时想做什么}这个js可以听鼠标点击浏览器关闭按钮,在浏览器状态栏的鼠标右键弹出菜单和各种快捷键中关闭。但是,双击浏览器右上角的图标关闭浏览器并关闭标签无法收听。

以上就是本文的全部内容。如果写得不好,请给各位英雄们很多宝贵的建议。

更多资讯
游戏推荐
更多+