¿Puedo abrir un cuadro de diálogo de confirmación cuando el usuario cierra la ventana en Safari / Chrome?

StackOverflow https://stackoverflow.com/questions/803887

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!

¿Fue útil?

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top