javascript - ¿Hay alguna forma de usar window.onbeforeload en Mobile Safari para dispositivos iOS?
iphone mobile-safari (2)
Si realmente lo necesita, no puede obtener todos los enlaces, formularios y objetos DOM que tengan un controlador que cambie la URL y espere hasta que haya hecho lo que desea. Para los enlaces, obténgalos por getElementsByTagName, compruebe si el href comienza con algo que no sea un # y simplemente agregue su función onbeforeunload add onclick (que se invocará antes de que se vea el href). Lo mismo para los formularios pero con onsubmit. Y finalmente, para los elementos que cambian el href con JavaScript, debes asegurarte cuando agregas el lsitener que llamas a tu función onbeforeunlaod (o, si usas escuchas DOM0 o DOM1, puedes simplemente agregar alguna clase y luego usar un script global que verifica todos los elementos con la clase y lo agrega al oyente del evento con un cierre.
Pero normalmente deberías evitar el uso de este evento (probablemente usando cookies para almacenar lo que deseas enviar cada x segundos y permitir, en el peor de los casos, echarle un vistazo la próxima vez que el usuario cargue una página y En el mejor de los casos, puede enviar una solicitud de Ajax antes de la descarga o al momento de la descarga, lo que, incluso si solo envía los encabezados http, le permitirá obtener lo que desea.
Parece que Apple ha desactivado la ventana. Antes de descargar el evento para dispositivos iOS (iPhone, iPad, iPod Touch). Lamentablemente, no encuentro ninguna documentación sobre por qué este evento no funciona en Mobile Safari.
¿Alguien sabe si hay una alternativa confiable a esta función? Parece que el navegador de Android lo admite, y la aplicación de escritorio Safari también admite el evento onbeforeunload sin problemas.
Veo que es una vieja pregunta, pero me enfrenté a este problema recientemente.
Estoy usando window.unload
y funciona bien en los navegadores iOS (aunque si miras la documentación de Apple , parece estar en desuso y recomiendan usar document.pagehide
)