vue项目 | Javascript窗口对象退出清除localstorage

vue项目 | Javascript窗口对象退出清除localstorage

最近在做vue-h5项目的时候测试当中有这么个需求:要在微信当中没有执行退出操作的时候,直接关闭窗口,进行退出登录操作要清除用户的信息,经过测试记录使用如下:


js-9.png


onbeforeunload 事件

定义和用法

onbeforeunload 事件在即将离开当前页面(刷新或关闭)时触发。

该事件可用于弹出对话框,提示用户是继续浏览页面还是离开当前页面。

对话框默认的提示信息根据不同的浏览器有所不同,标准的信息类似 "确定要离开此页吗?"。该信息不能删除。

但你可以自定义一些消息提示与标准信息一起显示在对话框。


从javascript窗口对象当中我们知道他是在离开当前页面执行的那么这样符合我们想要的,所有把以下代码放入钩子函数当中执行经过测试实现了我们当前的需求,

window.onbeforeunload = function(){
      localStorage.removeItem('你的缓存名称')
    }


但是会出现另一个bug,就是刷新的时候页面也会执行清除,

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

但是上面的刷新还是会触发,但是HTML5给我们提供sessionStorage会话存储:

sessionStorage 是HTML5新增的一个会话存储对象,用于临时保存同一窗口(或标签页)的数据,在关闭窗口或标签页之后将会删除这些数据。本篇主要介绍 sessionStorage(会话存储)的使用方式。包括添加、修改、删除等操作。


特点:

1) 同源策略限制。若想在不同页面之间对同一个sessionStorage进行操作,这些页面必须在同一协议、同一主机名和同一端口下。(IE 8和9存储数据仅基于同一主机名,忽略协议(HTTP和HTTPS)和端口号的要求)

2) 单标签页限制。sessionStorage操作限制在单个标签页中,在此标签页进行同源页面访问都可以共享sessionStorage数据。

3) 只在本地存储。seesionStorage的数据不会跟随HTTP请求一起发送到服务器,只会在本地生效,并在关闭标签页后清除数据。(若使用Chrome的恢复标签页功能,seesionStorage的数据也会恢复)。

4) 存储方式。seesionStorage的存储方式采用key、value的方式。value的值必须为字符串类型(传入非字符串,也会在存储时转换为字符串。true值会转换为"true")。

5) 存储上限限制:不同的浏览器存储的上限也不一样,但大多数浏览器把上限限制在5MB以下。

备注:上面标红的是不是我们想要的!


浏览器支持:

支持sessionStorage的浏览器最小版本:IE8、Chrome 5。

追梦猪网站致力于前端分享申明:本站内容搜集整理而来请勿商业用途,仅供交流所用,如若侵犯您的权益请邮件站长进行删除!

文明浏览请勿传播非法内容