我们一般都直接把信息存在了sessionStorage中,这样就避免了下面这个问题的出现。但是有的时候我们在维护旧项目的时候,这个方法可能会带给我们更好的体验。
要实现这个需求并不难,但是在实现的过程中我们会发现面临着onbeforeunload、onunload事件失效的问题,但是在页面刷新的时候又会触发,所以我们可以借助于这个原理来实现我们的需求
思路:
设置一个刷新时会保存到sessionStorage的switch, switch存储在sessionStorage中,页面关闭的时候会消失
当打开页面的时候,在onload事件中,如果sessionStorage中没有flag的时候,说明此时是页面的初始化,就清除掉token,就会起到没有token得重新登录的作用
在刷新或离开该页面的时候会触发方法onbeforeunload 中在sessionStorage中保存变量switch,用处是在刷新/离开页面的时候,switch为真,触发了onload事件,当switch为真的时候就不触发清除掉token的行为
实现:
// onload 事件会在页面或图像加载完成后立即发生。
window.onload = function () {
if (!window.sessionStorage["switch"]) {
// 关闭浏览器
window.localStorage.removeItem("token");
} else {
// 刷新
}
};
// 在即将离开当前页面(刷新或关闭)时执行
window.onbeforeunload = function () {
console.log('onbeforeunload');
window.sessionStorage["switch"] = 1;
};