Estoy tratando de cerrar el navegador después de haber llegado a una página de confirmación de pedido y arroja una alerta como se muestra a continuación. Esto crea una idea errónea para el usuario de que sus cambios no se guardaron. Así que quiero evitar esta ventana emergente.
Sé que esta alerta se activa debido al evento beforeunload . Solución que he probado:
window.addEventListener("beforeunload",(event)=>{ return null; })y
window.onbeforeunload=null;No estoy usando jQuery en mi aplicación. ¿Hay alguna otra forma en que pueda desactivar este evento para que no se active?
Enlaces que he probado:
Cómo deshabilitar/anular "¿Desea abandonar este sitio?" ¿alerta?
Deshabilite la ventana emergente "Los cambios que realizó pueden no guardarse"
Cómo deshabilitar "Es posible que los cambios realizados no se guarden". cuadro de diálogo (cromo)?
Ninguno de ellos está trabajando para mí.
¿Cómo puedo lograr esto sin jQuery?. Lo que me confunde es cómo manejar este evento para que no muestre la ventana emergente.
Estoy usando la versión de Chrome 101.0.4951.64
Esto podría deberse a alguna biblioteca de terceros u otra funcionalidad en su código que escucha el evento "beforeunload" y tal vez modifica el valor de event.returnValue .
Esta solución puede funcionar para usted.
window.addEventListener('beforeunload', function (event) { event.stopImmediatePropagation(); });Esto evitará la ejecución de los demás oyentes de la cadena.
Es importante incluir este código en la parte superior de la aplicación para asegurarse de que su función se ejecute primero.
En el caso de Angular, un buen lugar puede ser el ngOnInit del AppComponent.
Simplemente agregue una documentación de MDN del evento beforeunload como referencia.
https://developer.mozilla.org/en-US/docs/Web/API/Window/beforeunload_event
Cuando este evento devuelve (o establece la propiedad returnValue en) un valor distinto de nulo o indefinido, se le pedirá al usuario que confirme la descarga de la página.
Internet Explorer no respeta el valor de retorno nulo y lo mostrará a los usuarios como texto "nulo". Tienes que usar undefined para omitir el aviso.