js:关闭页面删除token 刷新无操作

684 阅读1分钟

我们一般都直接把信息存在了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;

};