Tengo una aplicación web que, de forma predeterminada, guarda los datos del usuario en el lado del servidor si la conexión del usuario se cierra de alguna manera que no fue iniciada por el usuario (como el proceso del navegador del usuario se elimina, el sistema del usuario se apaga o si el Internet del usuario se desconecta para algunos tiempo). Pero si el propio usuario cierra el navegador o cierra la pestaña del navegador, en este caso el servidor debería eliminar los datos del usuario en el backend.
Básicamente, quiero diferenciar entre cuando el propio usuario cierra intencionalmente la ventana de la página web o cuando se desconecta por algún problema técnico.
Para esto, utilicé el evento de unload de la ventana y llamé a una API para eliminar datos.
@HostListener('window:unload', ['$event']) unloadHandler($event: any) { this.sendApiToDeleteData(); }Pero esta función no se llama al hacer clic en el botón Atrás del navegador. Ya que el usuario iniciará el regreso al hacer clic en el botón Atrás del navegador. Quiero eliminar los datos del usuario. Pero parece que la descarga no funciona con el botón Atrás.
Además, de la documentación aquí . Dice que el evento no es compatible con el caché de retroceso/adelante Y dado que el documento también sugirió no usar el evento de unload . ¿Hay alguna otra forma de manejar la descarga de la página o alguna forma mejor de manejar mi caso de uso?
Hola, puedes usar esto junto con tu código para detectar la pulsación trasera:
@HostListener('window:popstate', ['$event']) onPopState(event) { console.log('Back button clicked'); }