onunload 谷歌浏览器?lodop 谷歌浏览器

大家好,如果您还对onunload 谷歌浏览器不太了解,没有关系,今天就由本站为大家分享onunload 谷歌浏览器的知识,包括lodop 谷歌浏览器的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!

onunload 谷歌浏览器?lodop 谷歌浏览器

本文目录

  1. 怎么判断是手动刷新浏览器还是程序刷新浏览器
  2. 基于JavaScript判断浏览器到底是关闭还是刷

一、怎么判断是手动刷新浏览器还是程序刷新浏览器

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