在Angular 2应用程序中,我们将令牌存储在本地存储中,现在我想在用户在登录期间未检查记住我选项时清除浏览器关闭上的令牌。我是通过卸载浏览器事件来完成的,但是当用户从窗口中的任务管理器关闭浏览器时,该事件的问题不会触发。
答案 0 :(得分:6)
以下内容应该实现这一目标......
import { Component, HostListener } from "@angular/core";
@Component({
selector: 'app-root',
templateUrl:"./app/app.component.html"
})
export class AppComponent {
@HostListener("window:onbeforeunload",["$event"])
clearLocalStorage(event){
localStorage.clear();
}
}
注意: onBeforeUnload
正在浏览器关闭事件
答案 1 :(得分:1)
您可以使用window.beforeunload事件清除本地存储空间。
@HostListener('window:beforeunload', ['$event'])
beforeunloadHandler(event) {
localStorage.removeItem(key);
}
或者,您可以存储与本地存储几乎相同的信息in session storage,但选项卡关闭时数据会被清除。
答案 2 :(得分:0)
以下代码仅在关闭时删除令牌,而在刷新页面时不会删除
@HostListener('window:unload', ['$event'])
async unloadHandler(event) {
if (event.currentTarget.performance.navigation.type !== PerformanceNavigation.TYPE_RELOAD) {
localStorage.clear();
}
}