onunload 谷歌浏览器?lodop 谷歌浏览器
大家好,如果您还对onunload 谷歌浏览器不太了解,没有关系,今天就由本站为大家分享onunload 谷歌浏览器的知识,包括lodop 谷歌浏览器的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!
本文目录
一、怎么判断是手动刷新浏览器还是程序刷新浏览器
1、一、目前搜出来比较普遍的根据beforunload以及unload执行的间隔时间
2、window.onbeforeunload=function(e){//执行该事件时将当前时间存入cookie
3、 this.$cookies.set('_onbeforeTime',new Date().getTime());//格式:名称,值,时长(可不填)
4、 this._unloadTime=new Date().getTime();
5、 this._onbeforeTime=this.$cookies.get('_onbeforeTime');//读取cookie值
6、 this._gap_time=this._unloadTime-this._onbeforeTime;//两个事件执行间隔时间
7、/**判断间隔时间,根据个人浏览器性能而定,需要进行测试。
8、/*这里测试出的数据关闭浏览器是在0~8ms
9、/*不同浏览器数据不同,火狐在关闭浏览器时时间差在0~20ms,刷新则在15ms以上
10、 if(!this.isLogin) window.localStorage.clear();
11、 this.$cookies.remove()//清除cookie缓存
12、由于不同浏览器之间两个方法的执行间隔时间不同,因此该方法会不太稳定,建议多测试找到一个稳定的间隔数值
13、二、原理同上,根据unload以及load的间隔时间判断
14、一般来说,在刷新时两个方法是紧接着执行的,间隔时间相较于重新打开浏览器而言会小很多,同样的,间隔时间需要多做测试取准确值,此方法相较于第一个方法而言,准确度会高很多
15、window.onunload=function(e){//执行该事件时将当前时间存入cookie
16、 this.$cookies.set('_onbeforeTime',new Date().getTime());//格式:名称,值,时长(可不填)
17、 this._unloadTime=new Date().getTime();
18、 this._onbeforeTime=this.$cookies.get('_onbeforeTime');//读取cookie值
19、 this._gap_time=this._unloadTime-this._onbeforeTime;//两个事件执行间隔时间
20、/**判断间隔时间,需要进行测试。
21、/*这里测试出的数据关闭浏览器是在10000ms以上
22、 if(this._gap_time> 10000){
23、 if(!this.isLogin) window.localStorage.clear();
24、 this.$cookies.remove()//清除cookie缓存
25、三、根据window.performance.navigation.type属性判断(该属性返回一个整数值,表示网页的加载来源,可能有以下4种情况):
26、0:网页通过点击链接、地址栏输入、表单提交、脚本操作等方式加载,相当于常数performance.navigation.TYPE_NAVIGATE。
27、1:网页通过“重新加载”按钮或者location.reload()方法加载,相当于常数performance.navigation.TYPE_RELOAD。
28、2:网页通过“前进”或“后退”按钮加载,相当于常数performance.navigation.TYPE_BACK_FORWARD。
29、255:任何其他来源的加载,相当于常数performance.navigation.TYPE_RESERVED。
30、四、在window上添加属性进行区分是否被刷新或者是第一次加载,即使页面刷新, name属性值也不会被重置,除非手动关闭当前页面
31、五、(只限于谷歌浏览器)根据window.chorme.loadTime().navigation
二、基于JavaScript判断浏览器到底是关闭还是刷
//页面刷新时,刷新之前执行onbeforeunload事件,在新页面即将替换旧页面时onunload事件,最后onload事件。
//页面关闭时,先onbeforeunload事件,再onunload事件。
//页面刷新时,只执行onunload;页面关闭时,只执行onbeforeunload事件
刷新的时候先onbeforeunload,然后取服务端请求数据,在新页面即将替换旧页面时onunload事件,而页面关闭时,先onbeforeunload事件,再立即onunload事件。那么在刷新的时候,onbeforeunload与onunload之间的时间肯定比关闭的时候时间长,经过测试确实如此。
使用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能监听到鼠标点击浏览器关闭按钮、浏览器状态栏鼠标右键弹出菜单中的关闭以及各种快捷键。但是双击浏览器坐上角图标关闭浏览器和关闭标签页无法监听。
好了,文章到这里就结束啦,如果本次分享的onunload 谷歌浏览器和lodop 谷歌浏览器问题对您有所帮助,还望关注下本站哦!
声明:信息资讯网所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流,版权归原作者东方体育日报所有。若您的权利被侵害,请联系 删除。
本文链接:http://www.gdxhedu.com/news/125442.html