Foros del Web » Programando para Internet » Javascript »

¿Cerrar una ventana que no se ha creado en la ventana principal actual?

Estas en el tema de ¿Cerrar una ventana que no se ha creado en la ventana principal actual? en el foro de Javascript en Foros del Web. Buenas. Paso a explicaros la idea que tengo, a ver si es posible realizarla o no. Abro una pequeña ventana al hacer click en un ...
  #1 (permalink)  
Antiguo 16/12/2009, 03:46
 
Fecha de Ingreso: diciembre-2009
Mensajes: 2
Antigüedad: 14 años, 4 meses
Puntos: 0
¿Cerrar una ventana que no se ha creado en la ventana principal actual?

Buenas.

Paso a explicaros la idea que tengo, a ver si es posible realizarla o no.

Abro una pequeña ventana al hacer click en un icono, hasta aquí todo perfecto. El problema es el siguiente: La web tiene bastantes HTML, y el pop-up sigue abierto si se cambia de página.

¿Es posible cerrar la ventanita desde otra ventana que no sea el padre de esta?

Espero haberme explicado bien.

Saludos y gracias
  #2 (permalink)  
Antiguo 16/12/2009, 03:59
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Respuesta: ¿Cerrar una ventana que no se ha creado en la ventana principal actual?

Hola:

Puede hacerse desde el sistema de ventanas del navegador, pero debería tener un nombre (el segundo parámetro de la instrucción open()... por ejemplo, si se llamasa "popup", la instrucción sería:
window.frames.popup.close()...

y supongo que también funcionaría cuando la ventana perdiese el foco:

onfocus = function() {
if (self.blur() self.close();
}

Dinos si te sirve algo...

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #3 (permalink)  
Antiguo 16/12/2009, 04:30
 
Fecha de Ingreso: diciembre-2009
Mensajes: 2
Antigüedad: 14 años, 4 meses
Puntos: 0
Respuesta: ¿Cerrar una ventana que no se ha creado en la ventana principal actual?

Gracias por tu tiempo caricatos, pero por lo que he visto, lo que quiero hacer no es posible.

El objeto window hace referencia a la ventana actual, por lo tanto no reconoce el pop-up que se ha abierto en otra ventana diferente. Y como tampoco es su ventana hija...

Gracias por todo, por intentarlo no perdía nada.
  #4 (permalink)  
Antiguo 16/12/2009, 06:51
Avatar de ceSharp  
Fecha de Ingreso: octubre-2008
Ubicación: Madrid
Mensajes: 495
Antigüedad: 15 años, 6 meses
Puntos: 66
Respuesta: ¿Cerrar una ventana que no se ha creado en la ventana principal actual?

Hola Xantharkam,

a ver si te he entendido. Tu tienes una página padre, en ella un botón (por ejemplo) que abre una ventana en popup. Quieres que, al navegar a otra página desde la página padre se cierre el popup, es eso?

en ese caso intenta esto:

en la página padre creas una variable global. En el popup creas un bucle que esté comprobando constantemente esa variable, y en el momento que cambia cierras el popup. por ejemplo así-->

setInterval(comprobar,1);

function comprobar()
{
debugger;
var test = top.opener.variableVentanaPadre;
if(test != 1)
{this.close();clearInterval();}
}

como ves setInterval llama a la variable cada 1 milisegundo, mientras su valor sea uno el popup sigue 'vivo' cuando no sea 1 se cerrará. Cuando navegas hacia otra página no localiza la variable global y se cierra.
Intenta llamar a tu variable de la página padre de forma rara, no vaya a ser que a la página que navegues también la tenga y entonces se mantendría el popup.

quizá es una solución 'cutre' pero funciona, a ver que opinan los expertazos del foro, jejejeje...

salu2
  #5 (permalink)  
Antiguo 16/12/2009, 06:54
Avatar de ceSharp  
Fecha de Ingreso: octubre-2008
Ubicación: Madrid
Mensajes: 495
Antigüedad: 15 años, 6 meses
Puntos: 66
Respuesta: ¿Cerrar una ventana que no se ha creado en la ventana principal actual?

bueno, evidentemente el debugger; sobra y el clearInterval() también. Lo suelo poner para no dejar ningún bucle por ahí rondando, jejejeje. Así quedaría mejor:

setInterval(comprobar,1);

function comprobar()
{

var test = top.opener.variableVentanaPadre;
if(test != 1)
{this.close();clearInterval();}
}


salu2
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 14:17.