2011-06-01 20 views
35

¿Existe algún método alternativo para utilizar en lugar de onforeforeload en el dispositivo móvil-safari? Me di cuenta de que Google podía capturar el evento onbeforeunload en el safari móvil. ¿Alguien ha descubierto cómo lo están haciendo?¿Existe algún método alternativo para usar antes de la descarga en el safari móvil?

Google pudo hacerlo usando su cliente de gmail. Cree un nuevo mensaje ... escriba algo en el área de texto ... presione el botón Atrás del navegador. Aparece un mensaje de advertencia. Usé un iPad para hacer mi prueba.

+0

existe tanto onunload y onbeforeunload Puede aclarar qué es exactamente lo que estamos tratando de lograr? – Steve

+11

Safari móvil no parece tener antes de descargar. En cuanto a la forma en que Google lo está simulando en Gmail, parecen usar un truco de confirmación onunload con iframes. Ver la respuesta de danny armstrong aquí: http://stackoverflow.com/questions/3239834/window-onbeforeunload-not-working-on- the-ipad Creo que la página puede descargarse cuando presiona el botón Atrás, y la página anterior de Gmail se recupera a la perfección desde allí. Intente copiar una URL de respuesta en Gmail, vaya a un dominio no relacionado, vaya a la URL copiada, escriba algo en el mensaje y luego intente volver ... ¡la confirmación no se inicia! – Amalgovinus

+1

Consulte también [window.onbeforeunload no funciona en el iPad?] (Http://stackoverflow.com/questions/3239834/window-onbeforeunload-not-working-on-the-ipad) –

Respuesta

5

Supongo que están usando la API de historial. Al escuchar popstate

window.addEventListener("popstate", function(e) { ... }); 

puede mostrar una advertencia antes de permitir hacer algo estúpido.

+0

Hola - esto parece no funcionar: window.addEventListener (" popstate ", función (e) {alerta (" hola ")}); no se conecta a un ipad. Veo que esta respuesta es hace 5 años (!) Sin embargo! – user2808054

1

Uso pagehide evento (reference)

+0

pagehide doens't le permite agregar una ventana emergente de confirmación, que era de lo que se trataba la pregunta original (lo siento!) – user2808054

+0

Lea la pregunta antes de votar: "¿Hay un método alternativo para usar en lugar de onforeforeload en mobile-safari?". el diálogo fue solo un ejemplo para probarlo. – artkoenig

Cuestiones relacionadas