javascript - 如何处理具有角度浏览器支持的窗口卸载事件?
问题描述
我有一个 Web 应用程序,如果用户的连接以任何非用户发起的方式关闭(如用户的浏览器进程被杀死、用户的系统关闭或用户的互联网断开连接),我有一个 Web 应用程序默认情况下将用户的数据保存在服务器端时间)。但是如果用户自己关闭浏览器或关闭浏览器选项卡,那么在这种情况下,服务器应该在后端删除用户的数据。
基本上,我想区分用户自己何时故意关闭网页窗口或他因任何技术问题而断开连接。
为此,我使用了窗口的unload
事件并调用了一个 api 来删除数据。
@HostListener('window:unload', ['$event'])
unloadHandler($event: any) {
this.sendApiToDeleteData();
}
但是从浏览器单击后退按钮时不会调用此函数。由于返回将由用户通过单击浏览器后退按钮来启动。我想删除用户数据。但似乎卸载不适用于后退按钮。
另外,来自此处的文档。它说事件与后退/前进缓存不兼容并且由于文档还建议不要使用 unload
事件。有没有其他方法来处理页面卸载或任何更好的方法来处理我的用例?
解决方案
您好,您可以将其与您的代码一起使用来检测回压:
@HostListener('window:popstate', ['$event'])
onPopState(event) {
console.log('Back button clicked');
}
推荐阅读
- pine-script - 如果最后一个订单相反,我可以将交易视图策略限制为仅做空/做多吗
- python - 在 Python 中使用带有 asyncio 的信号量
- javascript - “对象数组”在这里的作用是什么?
- python - DearPyGUI:如何导入一个简单的 csv 文件(使用在 UI 中运行的文件对话框)用作变量
- html - 带有粘性页眉和页脚以及可滚动内容的嵌套 DIV
- bash - 我可以使用 bash 将文件中的一行替换为包含引号的新行吗?
- tablesorter - 列数更改时重置和重新处理表
- json - Chai 只检查 json 对象的某些元素
- scala - Kleisli flatMap stange 类型参数子类型化
- node.js - UnhandledPromiseRejectionWarning:抛出错误时出错