Foros del Web » Programando para Internet » Javascript »

Como detectar si se ha cerrado una ventana

Estas en el tema de Como detectar si se ha cerrado una ventana en el foro de Javascript en Foros del Web. Buenas; veréis esta pregunta la hice en el foro de php, ya que mi problema radicaba en que si me cerraban la ventana con el ...
  #1 (permalink)  
Antiguo 03/03/2006, 08:59
 
Fecha de Ingreso: diciembre-2004
Mensajes: 98
Antigüedad: 19 años, 4 meses
Puntos: 0
Pregunta Como detectar si se ha cerrado una ventana

Buenas; veréis esta pregunta la hice en el foro de php, ya que mi problema radicaba en que si me cerraban la ventana con el "X" del navegador la sesión se me quedaba abierta y no podía cerrarla, me comentaron que quizás con javascript podría hacerse.

Se me ocurre la idea, no se si será una tonteria, que si el foco va a la ventana cuando se abre, tambien retorna a la página que quedo abierta en segundo plano cuando la ventana se cierra, ¿seria posible detectar esto?

Saludos y gracias de antemano.
  #2 (permalink)  
Antiguo 03/03/2006, 10:49
Avatar de pinchoso  
Fecha de Ingreso: octubre-2005
Ubicación: Barcelona
Mensajes: 177
Antigüedad: 18 años, 6 meses
Puntos: 0
Hola jomoli,

puedes usar onUnload() te muestro un ejemplo:

---pagina padre-----
Código:
<html>
<head>
<script type="text/JavaScript">
<!--
function MM_openBrWindow(theURL,winName,features) { //v2.0
  window.open(theURL,winName,features);
}
//-->
</script>
</head>
<body onclick="MM_openBrWindow('1.htm','hola','')">
Clica en la pantalla
</body>
</html>

---pagina hijo-----
Código:
<html >
<head>
</head>
<body onunload="javascript=window.opener.location='http://www.google.com'">
Cierrame
</body>
</html>
Con esto cuando cierres la ventana que se abre al hacer click en la primera te redireccionara a google.
En lugar de hacer un "location" puedes ejecutar cualquier función que tengas en el documento padre.

No estoy seguro de si te he contestado lo que preguntabas...si no aqui estamos...;)

Saludos.
__________________

  #3 (permalink)  
Antiguo 05/03/2006, 14:43
 
Fecha de Ingreso: diciembre-2004
Mensajes: 98
Antigüedad: 19 años, 4 meses
Puntos: 0
Probando onunload

Buenas Pinchoso, perdona que no te haya contestado antes, estoy probando onunload y no me hace caso, me explico:
Abro una ventana con window.open(....), en ella se piden unos datos, si son validos pasamos a otra página dentro de la misma ventana, en esta página hay un boton salir y en el body onunload="cerrar();", esta función, para hacer pruebas solo tiene alerta("estoy aqui"), bueno pues ni que de al botón cerrar mio ,ni que de al botón cerrar del navegador, aparece la dichosa frase del alert.
¿Soy yo el que hace las cosas mal (supongo) o el navegador me vacila?
Si podeis ayudarme os lo agradeceria.
Gracias y saludos
  #4 (permalink)  
Antiguo 08/03/2006, 09:51
 
Fecha de Ingreso: diciembre-2004
Mensajes: 98
Antigüedad: 19 años, 4 meses
Puntos: 0
Hemos dado con un hueso

Buenas a todos; el título que he puesto esta en función de que no existe ninguna respuesta a mi pregunta, es decir podemos tener un reto entre manos, o nadie se ha preguntado, ¿de que forma se puede cerrar la sesión si se oprime el boton "X" del navegador?, esto lo digo porque si alguno tiene una identificación de usuarios mediante sesiones esta se quedara abierta y aunque se cierre el navegador y se vuelva a abrir en una de las páginas ocultas esta se abrira sin ningún problema, con el usuario anterior lo que implica un problema de seguridad grande, (probado en IE6).

Si alguno estáis haciendo o tenéis algo parecido, este es un problema.

Por cierto el onunload no funciona bien, ya que se activa cuando quiere y si haces varias veces atras y adelante con el navegador, entonces es como si no estuviera, dedución no es de fiar.

Saludos
  #5 (permalink)  
Antiguo 08/03/2006, 10:30
Avatar de pinchoso  
Fecha de Ingreso: octubre-2005
Ubicación: Barcelona
Mensajes: 177
Antigüedad: 18 años, 6 meses
Puntos: 0
Bueno, en primer lugar, no se en que lenguage de programación estas realizando tu página, pero las variables de sesión (al menos las de ASP que es el lenguage de servidor con el que más trabajo) se pierden al cerrar el explorador, supongo que en PHP sucede lo mismo.

En segundo lugar, al cambiar de pagina dentro de la ventana que has abierto creo que pierdes la referencia a la ventana opener (eso no estoy seguro) con lo cual deberias ponerle un nombre a tu ventana padre (window.name="padre") y al llamar a la funcion onUnload() hacer referencia a este nombre.

De todas formas le dedicaré un tiempo y te comento mis resultados

Saludos.
__________________

  #6 (permalink)  
Antiguo 08/03/2006, 10:53
Avatar de pinchoso  
Fecha de Ingreso: octubre-2005
Ubicación: Barcelona
Mensajes: 177
Antigüedad: 18 años, 6 meses
Puntos: 0
Rectifico, lo he provado cambiando de ventana, y me sigue cambiando la dirección de la página padre sin ponerle ningun nombre, de todas formas me he dado cuenta que si le pones al body onunload que llame a una funcion no funciona, en cambio, si pones directamente body onunload="window.opener.location='tupagina.html'" si que funciona.

Incluso he hecho una prueba haciendo un onUnload en la pagina padre, hago lo siguiente:

onunload="alert('la ventana se cierra, cerraremos la sesion');window.open('http://www.forosdelweb.com','nueva','width=200,height=200 ')"

El problema supongo lo podemos encontrar con bloqueadores de pupUps.

Un saludo.
__________________


Última edición por pinchoso; 08/03/2006 a las 11:00
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:01.