如何在Angular应用退出前执行代码?解决未登出关闭存储问题
Angular页面关闭时写入localStorage问题解决
- 修正事件名称:你之前绑定的
UnloadHander不是标准浏览器事件,正确的页面卸载前事件是beforeunload,注意全小写,@HostListener的事件格式应为window:beforeunload。 - 调整回调逻辑:
localStorage.setItem是同步操作,直接执行即可,无需返回其结果(setItem返回undefined)。如果不需要触发浏览器的关闭确认弹窗,可省略返回值;若需要弹窗提示用户,需调用event.preventDefault()并返回非空字符串(符合浏览器规范)。
修正后的代码:
@HostListener('window:beforeunload', ['$event']) beforeUnloadHandler(event: Event) { localStorage.setItem("theflag", "2"); // 如需弹出关闭确认提示,保留以下两行;不需要则注释/删除 event.preventDefault(); return ''; }
额外说明:若遇到浏览器在页面卸载时忽略localStorage操作的极端情况,可考虑使用navigator.sendBeacon将数据发送到后端持久化,但仅针对本地存储需求的话,上述修正后的代码即可满足要求。
内容的提问来源于stack exchange,提问作者taleen wahdan
相关产品推荐
相关产品推荐

