beforeunload

Baseline Widely available *

This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.

* Some parts of this feature may have varying levels of support.

El evento beforeunload es disparado cuando la ventana, el documento y sus recursos estan a punto de ser descargados. El documento todavia es visible y el evento todavia es cancelable en este punto.

Si es asignado un string a la propiedad del objeto Evento returnValue, una caja de dialogo aparece, preguntando al usuario que confirme que dejara la pagina(mirar el ejemplo de abajo). Algunos navegadores muestran el string devuelto en una caja de dialogos, otros muestran un mensaje fijo. Si no se provee ningun valor, el evento procede silenciosamente.

Nota: Para combatir pop-ups indeseados, los navegadores pueden no mostrar mensajes creados en manejadores del evento beforeunload a menos que se haya interactuado con la pagina, o incluso sin que se haya interactuado en nada con esta.

Burbujas No
Cancelable Si
Objetos de destino defaultView
Interfaz Event

Propiedades

Propiedad Tipo Descripcion
target Read only EventTarget El evento objetivo(el objetivo superior en el arbol del DOM).
type Read only DOMString El tipo de evento.
bubbles Read only Boolean El evento normalmente burbujea?
cancelable Read only Boolean Es posible cancelar el evento?
returnValue DOMString El valor actual devuelto por el evento (el mensaje que se le mostrara al usuario).

Ejemplos

js
window.addEventListener("beforeunload", function (event) {
  event.returnValue = "\\o/";
});

// es equivalente a
window.addEventListener("beforeunload", function (event) {
  event.preventDefault();
});

Navegadores basados en WebKit no siguen las especificaciones para la caja de dialogos. Un ejemplo que funcione con distintos navegadores seria similar al siguiente:

js
window.addEventListener("beforeunload", function (e) {
  var confirmationMessage = "\\o/";

  e.returnValue = confirmationMessage; // Gecko, Trident, Chrome 34+
  return confirmationMessage; // Gecko, WebKit, Chrome <34
});

Notas

A partir del 25 de Mayo del 2011, la especificación HTML5 establece que llamadas a los métodos window.alert(), window.confirm(), y window.prompt()pueden ser ignoradas durante este evento.Mire las especificaciones de HTML5 para mas detalles.

Varios navegadores ignoran el resultado del evento y no le preguntan al usuario por confirmacion en absoluto. El documento siempre se descargara automaticamente. Firefox tiene un switch llamado dom.disable_beforeunload en about:config para habilitar este comportamiento.

Usando este manejador de evento tu pagina previene que Firefox cambie el cache de la pagina a uno en memoria bfcache. Mire Usando el almacenamiento en cache Firefox 1.5 para detalles.

Especificaciones

Specification
HTML
# event-beforeunload
HTML
# handler-window-onbeforeunload

Compatibilidad con navegadores

Report problems with this compatibility data on GitHub
desktopmobile
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
beforeunload event
Activation by setting event.returnValue to any truthy value
Deprecated
Dialog displays a generic string, not event handler return value
Deprecated
Activation using event.preventDefault()
Activation by returning a string
Deprecated

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support
Partial support
Partial support
No support
No support
Deprecated. Not for use in new websites.
Has more compatibility info.

Mire tambien