Ver Mensaje Individual
  #1 (permalink)  
Antiguo 07/03/2011, 15:59
JaimeLG
 
Fecha de Ingreso: marzo-2008
Mensajes: 22
Antigüedad: 16 años, 1 mes
Puntos: 1
¿Alguna forma de cerra ventanas mediante el nombre dado en vez de la instancia?

Hola:

Tengo una aplicación que necesita abrir varios popups para ir dando de alta distintos elementos. Cuando doy de alta algo se van refrescando los elementos que hay en las ventanas padre y se mantienen los popups abiertos (gustos del cliente).

También he creado una función javascript recursiva de manera que cuando una ventana padre se cierra o se hace un volver a la página anterior, mediante una accion de struts, no con los botones de history back, recorre las posibles ventanas hija y las posibles hijas de cada una de estas, cerrandolas todas.

El método que utilizo es el clásico, ventana = window.open..., más o menos como el que se utiliza en el wiki de apertura y cierres de ventanas que esta en

http://www.forosdelweb.com/wiki/Javascript:_Cerrar_todas_las_ventanas

El problema que tengo y que he visto en la wiki también es que cuando realizas cualquier acción que implique un refresh o un submit, las referencias a esos window.open se pierden, por lo que luego es imposible cerrarlas haciendo referencia a nombreventana.close().

Sin embargo, hay una parte del window.open que es el nombre de la propia ventana, por ejemplo, popupArtículo, mediante el cual, si yo desde cualquier sitio intento abrir otra ventana con ese mismo nombre, y esta ya existe, se utilizará este popup para abrir el nuevo contenido en vez de crearse otra nueva.

Después de todo este rollo, la pregunta es si hay alguna forma de cerrar ventanas hija a través del nombre con el que se abre, en vez de utilizar el nombre de la variable javascript con el que se ha creado, ya que este al refrescar se ha perdido.

A lo mejor hay que utilizar el objeto navigator en vez del objeto window para encontrar esas referencias por nombre de popup pero no estoy seguro de si se puede hacer así. Si alguien tiene idea de cómo realizar este cierre de ventanas en cadena, una vez hacemos un refresco de una o varias de las ventanas abiertas y que hemos perdido las referencias del objeto window, le agradecería que me dijera cómo hacerlo o al menos por dónde van los tiros para solucionarlo.

A mi lo único que se me ocurre es intentar preservar esas referencias mediante parámetros pero probablemente sería para volverse loco.

Un saludo y gracias.