¿Puedo abrir un cuadro de diálogo de confirmación cuando el usuario cierra la ventana en Safari / Chrome?
-
03-07-2019 - |
Pregunta
En IE y FF, puedo adjuntar un controlador de eventos a onBeforeUnload, y al pasar una cadena a una propiedad del evento, el usuario verá un cuadro de diálogo que le preguntará si desea continuar con la "descarga". (ya sea cerrando la ventana o navegando).
Safari y Chrome no son compatibles con onBeforeUnload, y onUnload parece ser demasiado tarde. ¿Hay alguna forma de replicar la misma funcionalidad en Safari / Chrome?
NOTA: No estoy tratando de mantener al usuario como rehén. Sé que esto es molesto y poco interesante. De hecho, mi sitio hace todo lo posible para permitir que el usuario vaya libremente y tenga todo en su lugar cuando regrese. Sin embargo, alojo otros sitios dentro de IFrames, y a veces estos deciden deshacerse de mí y hacerse cargo del navegador, que es lo que estoy tratando de evitar.
¡Gracias!
Solución
Esto funciona perfectamente para mí en Chrome y Safari:
<html><body><p>Test</p>
<script>window.onbeforeunload = function() { return "Sure?"; }</script>
</body></html>
Cuando intento cerrar la ventana, aparece el mensaje.
Otros consejos
StackOverflow en sí usa onbeforeunload
, y funciona bien para mí en Safari:
function setConfirmUnload(a){window.onbeforeunload=a?function(){return a}:null}
Lo revisé en Chrome y parece que funciona bien con esto:
<body onunload="alert('x');" onbeforeunload="test1();">
Esta pregunta se trata con un poco más de detalle en otra nueva pregunta de StackOverFlow: Configurando onbeforeunload en el elemento del cuerpo en Chrome e IE usando jQuery