vue 判断窗口是关闭还是刷新 笔记

当前项目需求  :

1.在同一浏览器只能登录一个账号

2.在该浏览器下可以多窗口操作这一账号

3.当浏览器窗口刷新时不做任何操作,如果关闭浏览器则要清空登录信息

 

一:

首先把登录信息缓存在本地,通过localStorage

不用sessionStorage,因为sessionStorage缓存的数据在通过浏览器地址栏输入地址打开新窗口时 会新建一个

他们之间不共享,除非是在当前窗口点击链接跳转才会共享

而localStorage则存在本地,不管开多少窗口都会共享登录信息这一数据

这一步实现上面 1,2 两个需求

二:

判断窗口是刷新还是关闭实现第 3 个需求

首先在App.vue里面 定义mounted 钩子函数

 mounted(){
    /**
     *判断浏览器窗口是刷新或者关闭操作
     * 无论任何浏览器不管是刷新或者是关闭都会执行下面两个方法 onbiforeunload  onunload
     * 根据时间差来实现
     * 在点击刷新或者关闭时开始计时记录下这一刻的时间戳
     * 因为刷新和关闭 在执行onunload方法时的时间不一样,一般情况下经过测试
     * 关闭时时间差不大于3毫秒
     * 刷新时即使只有一个简单的helloworld页面都不少于10毫秒
     * 而一般网站网页内容更多,时间差达到了100多毫秒
     *
     *
     * 下面方法的缺点是不管你开了多少窗口,都会在关闭一个窗口时清空所有localStorage缓存
     * 造成所有页面都需要重新登录,其实这也是针对项目而言的,目前本项目就不认为这是缺点
     * 而能更好的保护用户信息
     **/
    let beginTime = 0;//开始时间
    let differTime = 0;//时间差
    window.onunload = function (){
      differTime = new Date().getTime() - beginTime;
      if(differTime <= 5) localStorage.clear();
    };
    window.onbeforeunload = function (){
      beginTime = new Date().getTime();
    };
  }

在此记录,该思路是借鉴别人的,链接已经找不到了,修改后适用于vue

满足项目要求

  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 12
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值