700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > Vue.js判断浏览器关闭还是刷新(判断当前页面是首次加载还是刷新)

Vue.js判断浏览器关闭还是刷新(判断当前页面是首次加载还是刷新)

时间:2023-02-22 00:57:28

相关推荐

Vue.js判断浏览器关闭还是刷新(判断当前页面是首次加载还是刷新)

要求:在浏览器关闭时清除localStorage缓存,再次打开项目时进入登录页面,刷新则不清除

以下查询资料以及自身测试后提供五种思路方法:

(前两种判断浏览器关闭还是刷新,后三种判断当前页面是首次加载还是刷新进入)

(来源百度)

一、目前搜出来比较普遍的根据beforunload以及unload执行的间隔时间

在mounted中写入以下两个方法:

window.onbeforeunload=function(e){//执行该事件时将当前时间存入cookiethis.$cookies.set('_onbeforeTime',new Date().getTime());//格式:名称,值,时长(可不填)}window.unload=function(e){this._unloadTime=new Date().getTime();this._onbeforeTime=this.$cookies.get('_onbeforeTime');//读取cookie值this._gap_time=this._unloadTime-this._onbeforeTime;//两个事件执行间隔时间/**判断间隔时间,根据个人浏览器性能而定,需要进行测试。/* 这里测试出的数据关闭浏览器是在0~8ms/* 刷新则是10ms以上/* 不同浏览器数据不同,火狐在关闭浏览器时时间差在0~20ms,刷新则在15ms以上*/if(this._gap_time < 8){//判断登录状态if(!this.isLogin) window.localStorage.clear();}this.$cookies.remove()//清除cookie缓存}

由于不同浏览器之间两个方法的执行间隔时间不同,因此该方法会不太稳定,建议多测试找到一个稳定的间隔数值

二、原理同上,根据unload以及load的间隔时间判断

一般来说,在刷新时两个方法是紧接着执行的,间隔时间相较于重新打开浏览器而言会小很多,同样的,间隔时间需要多做测试取准确值,此方法相较于第一个方法而言,准确度会高很多

window.onunload=function(e){//执行该事件时将当前时间存入cookiethis.$cookies.set('_onbeforeTime',new Date().getTime());//格式:名称,值,时长(可不填)}window.onload=function(e){this._unloadTime=new Date().getTime();this._onbeforeTime=this.$cookies.get('_onbeforeTime');//读取cookie值this._gap_time=this._unloadTime-this._onbeforeTime;//两个事件执行间隔时间/**判断间隔时间,需要进行测试。/* 这里测试出的数据关闭浏览器是在10000ms以上/* 刷新则是2000ms~9000ms*/if(this._gap_time > 10000){//判断登录状态if(!this.isLogin) window.localStorage.clear();}this.$cookies.remove()//清除cookie缓存}

三、根据window.performance.navigation.type属性判断(该属性返回一个整数值,表示网页的加载来源,可能有以下4种情况):

0:网页通过点击链接、地址栏输入、表单提交、脚本操作等方式加载,相当于常数performance.navigation.TYPE_NAVIGATE。

1:网页通过“重新加载”按钮或者location.reload()方法加载,相当于常数performance.navigation.TYPE_RELOAD。

2:网页通过“前进”或“后退”按钮加载,相当于常数performance.navigation.TYPE_BACK_FORWARD。

255:任何其他来源的加载,相当于常数performance.navigation.TYPE_RESERVED。

四、在window上添加属性进行区分是否被刷新或者是第一次加载, 即使页面刷新, name属性值也不会被重置, 除非手动关闭当前页面

if(window.name == ""){//此次为首次加载window.name = "reload"; // 给window.name设置一个固定值 }else if(window.name == "reload"){//此次为页面刷新//....}

五、(只限于谷歌浏览器)根据window.chorme.loadTime().navigation判断

Reload:刷新页面

Other:首次打开页面

(方法同三)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。