Está el beforeunload
event, que se dispara cuando la página se está derribando (para seguir un enlace, o si la ventana se está cerrando, o actualizar, etc. .). Ejemplo:
window.onbeforeunload = function(event) {
var s = "You have unsaved changes. Really leave?";
event = event || window.event;
if (event) {
// This is for IE
event.returnValue = s;
}
// This is for all other browsers
return s;
}
Hay, por razones obvias, muy estrictos límites a lo que puede hacer en el controlador del evento beforeunload
, y como se puede ver arriba beforeunload
manipuladores tienen una firma diferente de controladores de eventos normales. Básicamente, su código no puede hacer nada asincrónico, no puede abrir ventanas nuevas y no puede cancelar el evento. Es puede devolver una cadena, y si lo hace, el navegador abrirá una ventana que le preguntará si realmente desea abandonar la página e incluir su cadena en esa ventana emergente.
Desde su comentario sobre la cuestión:
lo necesito antes, así que puede disparar una petición Ajax y actualizar algunas cosas ...
Cuando la página está siendo demolido, se Por lo general, puede salirse con la llamada síncrona ajax (async: false
) siempre que no tarde demasiado. Esta no es una gran idea y recomiendo evitarla si puede (por ejemplo, con guardados provisionales), ya que, entre otras cosas, introduce un retraso al cerrar la página. Pero si realiza la llamada de forma sincrónica (en lugar de la llamada asincrónica predeterminada y muy preferida), generalmente el navegador le permitirá hacerlo. Por supuesto, no sirve de nada si el navegador termina abruptamente (bloqueos, cierre forzado por parte del usuario, etc.).
Tenga en cuenta que async
marca is being deprecated and removed de jQuery (ticket). Creo que planean desaprobarlo en 1.8 y eliminarlo realmente en 1.9, pero no es hiper-claro desde la publicación del blog y el ticket.
Will en la página dispuesto no funciona? –
pero no funciona después de que la página se carga? Lo necesito antes para poder lanzar una solicitud de ajax y actualizar algunas cosas, luego cargar la página – Alex
No se puede confiar en la capacidad de hacer algo antes de que una página se descargue. El usuario podría, por ejemplo, cerrar la computadora abruptamente. – Pointy