Evento onunload de Javascript

  • Por
Ejemplo de uso del evento onunload en Javascript para abrir una ventana secundaria cuando el usuario abandone la página.

Veamos un ejemplo del evento onunload, que, recordamos, se activa cuando el usuario ha abandona la página web. Por tanto, onunload sirve para ejecutar una acción cuando el usuario se marcha de la página, ya sea porque pulsa un enlace que le lleva fuera de la página o porque cierra la ventana del navegador.

El ejemplo que deseamos mostrar sirve para abrir una página web en otra ventana cuando el usuario abandona la página. De este modo actúan muchos de los molestos popups de las páginas web, abriéndose justo cuando abandonamos el sitio que estábamos visitando.

<html> 
<head> 
   	<title>Abre al salir</title> 
   	<script> 
   	function abreventana(){ 
      	window.open("http://www.google.es","venta","") 
   	} 
   	</script> 
</head>

<body onunload="abreventana()">

<a href="http://www.desarrolloweb.com">DW!!</a> 
</body> 
</html>

El ejemplo es tan sencillo que casi sobran las explicaciones. Simplemente creamos una función que abre una ventana secundaria y la asociamos con el evento onunload, que se coloca en la etiqueta <body>.

Se puede ver en marcha en una página aparte.

Referencia: Si no tenemos una base de Javascript nos vendrá muy bien acceder a nuestra sección Javascript a fondo.

Si deseamos conocer más cosas de los eventos.

Si deseamos saber más sobre abrir ventanas.

Autor

Miguel Angel Alvarez

Miguel es fundador de DesarrolloWeb.com y la plataforma de formación online EscuelaIT. Comenzó en el mundo del desarrollo web en el año 1997, transformando su hobby en su trabajo.

Compartir

Comentarios

KarlanKas

03/11/2003
El ejemplo puesto tiene un pequeño problema: que cada vez que se cambie de página en el navegador, aunque sea dentro del mismo site se va a abrir la página, con el consiguiente engorro para el visitante al que tal vez le moleste tanta profusión de ventanitas. Si se va a utilizar para cerrar la sesión tal vez moleste la aparición de la ventana.

Una posible solución es:

1.- Abrir la ventana fuera del campo de visión del escritorio con un título que indique lo que se está haciendo.

2.- Un JS que identifique en qué dominio está la ventana madre. Si sigue en nuestro site que se cierre y si no (si se ha cerrado o si está en otro dominio) que haga lo que tenga que hacer (cerrar la sesión, moverse para mostrar un anuncio, un recordatorio...).

Una posible solución en mi humilde opinión sería poner en el head de la ventana que se abra:

<SCRIPT>
dominio="desarrolloweb.com"
if(opener && (opener.location.host==dominio || opener.location.host=="www."+dominio){
   self.close();
}
else{

   //Poner aquí lo que se quiera que se haga

}
</SCRIPT>


Entiendo que no debe ponerse en un onload porque cuanto antes se ejecute más rápido cierra la ventana si no debe estar.

Y en el código que abra la ventana se puede poner que se abra fuera de la pantalla poniendo:

ventana=("direccion.html","","left=3000,top=0");

Espero no haber resultado pesado.

javi

05/8/2005
En Netscape no funciona. Netscape activa el evento onUnload solo cuando se cambia de pagina dentro de una ventana, pero al cerrar la ventana no activa OnUnoload.

En realidad, creo que esto solo funciona en Iexplorer

José Molina

22/12/2005
Saludos.

Por allí conseguí una muy buena solución. Capturando la posición del click.

<script language="JavaScript">
<!--
function ExitSite(e) {
if (navigator.appName.indexOf("Microsoft")>=0){
e=event;
var tempX = e.clientX + document.body.scrollLeft;
var tempY = e.clientY + document.body.scrollTop;
if(tempX<0&&tempY<0){
alert("ABRIO");
}
}else{
//nose Netscape u otros
}
return true;
}
//-->
</script>

Aunque igual funciona solamente en IE

becha

16/2/2006
En Explorer funciona mal, porque cuando hago "actualizar" se activa tambien...

¿ Como controlo esto?

jomoli

06/3/2006
Tampoco funciona en IE 6.0 con SP2 bajo windows XP.

Saludos