¿Cómo puedo desactivar el cuadro de diálogo de confirmación “Abandonar página” en Firefox?
Tengo el siguiente código en mi aplicación Vue
para detectar cuando el usuario cierra la pestaña:
onBeforeUnload() {
window.onbeforeunload = null;
return undefined;
}
Desactivar el cuadro de diálogo de confirmación de “Salir de la página” funciona en Chrome, pero no en Firefox. ¿Por qué sucede eso? ¿Cómo desactivo el cuadro de diálogo de confirmación en Firefox?
Editar 1: Agregar y eliminar los listeners de beforeunload
created() {
window.addEventListener('beforeunload', this.onBeforeUnload);
},
beforeDestroy() {
window.removeEventListener('beforeunload', this.onBeforeUnload);
}
davy.ai
La razón por la cual deshabilitar el diálogo de confirmación de “Salir de la página” no funciona en Firefox es porque Firefox requiere que el evento
beforeunload
sea asignado un valor de tipostring
para mostrar el diálogo de confirmación. Esta es una característica de seguridad que impide que los sitios web bloqueen a los usuarios de abandonar la página sin su consentimiento.Para deshabilitar el diálogo de confirmación en Firefox, puedes asignar un valor de tipo
string
vacío al controlador de eventosbeforeunload
. Aquí tienes un ejemplo de código:Además, para añadir y eliminar los oyentes del evento
beforeunload
correctamente en Chrome y Firefox, utiliza los métodosaddEventListener()
yremoveEventListener()
en lugar de asignar directamente la propiedadonbeforeunload
. Aquí tienes un ejemplo actualizado de código para añadir y eliminar el oyente del eventobeforeunload
: