我现在正在使用AngularJS
并使用$window.localStorage
来存储登录用户的用户名。由于localStorage需要明确删除,我正在捕捉$(window).on('unload', function(){})
,如下所示。
$(window).on('unload', function(e) {
console.log('closed');
$window.localStorage.removeItem('user');
});
不幸的是,当关闭标签时会触发unload
个事件。问题是,假设我的网页有两个标签。当我关闭一个选项卡时,它将从localStorage中删除另一个选项卡中仍需要的user
数据。无论如何检测关闭网页的最后一个标签?
如果不是,还有其他办法可以解决这个问题吗?我也试图使用sessionStorage
代替。但是,存储仅适用于一个选项卡,因此如果我在另一个选项卡中打开该网页,则需要再次登录。
答案 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;