¿Hay alguna manera de capturar el resultado de la ventana antes de descargar el cuadro de diálogo de confirmación como el de Stack Overflow (esto sucede al salir de la página 'Ask Question' sin publicar la pregunta)?Capturar el resultado de la ventana. Antes de descargar el diálogo de confirmación
Así es como aparece en Chrome, creo que es ligeramente diferente en otros navegadores, pero siempre tiene algún tipo de botones sí/no.
Es de suponer que si todavía están en la página ofensiva después de que el evento ha sido disparado eligieron quedarse y que probablemente podría resolver esto observando la secuencia de js. Sin embargo, me gustaría saber cómo determinar si hicieron clic en "Salir de esta página"?
he implementado este, como a continuación:
// concept taken from SO implementation
function setConfirmUnload(showMessage, message) {
window.onbeforeunload = showMessage ? (message ? message : "this is a default message") : null;
}
// pseudo code
listen to changes on inputs
if any inputs fire a change event
call setConfirmUnload(true, 'My warning message')
nota estoy usando jQuery dentro de mi sitio.
Básicamente trato de implementar una implementación de borrador de Gmail, en la que si un usuario deja una página con un formulario al que le han hecho cambios sin guardarla, se calienta con un cuadro de diálogo similar. Si eligen descartar que son cambios y abandonan la página, necesito limpiar algunos registros temporales de la base de datos (estoy pensando en una llamada AJAX, o simplemente enviar el formulario con una bandera delete
) y luego enviarlos en su dirección .
Mi pregunta también se refiere a:
Para probar lo que hizo clic el usuario: he encontrado una solución exitosa usando '' 'window.onfocus()' ''. Esa función se activará cuando el usuario haga clic en ESTANCIA, y se devuelve a la página. Sin embargo, tenga en cuenta que onfocus() también se activará al cambiar pestañas, ventanas, etc. Establezca una variable global en onforeforeload() para poder verificar/capturar desde el lugar al que se dirige el usuario. Si el usuario QUIERE salir de la página, puede hacer algunas cosas finales en '' 'window.onunload()' '' – GDmac
El truco window.onfocus no funcionó en Firefox y Chrome para mí (solo IE) pero yo descubrió que el uso de setTimeout en el controlador 'beforeunload' (para ejecutar ejecutar algún código si un usuario opta por permanecer en la página) funcionó. Puede ver un ejemplo de trabajo aquí: https://jsfiddle.net/nathanbedford/uscobrm0/10/ –