JavaScript - 在网页的最后一个标签页上删除localStorage

时间:2017-05-03 09:35:00

标签: javascript jquery angularjs html5 tabs

我现在正在使用AngularJS并使用$window.localStorage来存储登录用户的用户名。由于localStorage需要明确删除,我正在捕捉$(window).on('unload', function(){}),如下所示。

$(window).on('unload', function(e) {
    console.log('closed');
    $window.localStorage.removeItem('user');
});

不幸的是,当关闭标签时会触发unload个事件。问题是,假设我的网页有两个标签。当我关闭一个选项卡时,它将从localStorage中删除另一个选项卡中仍需要的user数据。无论如何检测关闭网页的最后一个标签?

如果不是,还有其他办法可以解决这个问题吗?我也试图使用sessionStorage代替。但是,存储仅适用于一个选项卡,因此如果我在另一个选项卡中打开该网页,则需要再次登录。

4 个答案:

答案 0 :(得分:1)

我会尝试这样的事情:

在localStorage中设置$window.localStorage['tabCounter']变量,每次打开该应用的标签时都会执行+1,每次关闭标签时都会执行-1。在$(window).on('unload')中检查是否$window.localStorage['tabCounter'] == 0,并在这种情况下重置用户。

答案 1 :(得分:0)

没有必要使用$window.localStorage只使用localStorage并检查是否没有函数取消设置您的值。 locaStorage是永恒的,除非删除意味着它超越了你的刷新和标签,只要它们都坐在同一个网址(和端口)

答案 2 :(得分:-1)

你可以直接使用" localStorage"而不是" $ window.localStorage"。 这样,您将在选项卡的基础上使用localStorage,并且每当您关闭任何选项卡时,该选项卡的本地存储将被清除。

答案 3 :(得分:-3)

您可以使用

    $window.localStorage['user'] = null;

OR

    $window.localStorage['user'] = undefined;