Tengo un código que tomé de este foro que por medio de una ventana principal abre n cantidad de ventanas hijas (popus) y valida si esta última está o no abierta. Si está abierta le coloca un focus y si está cerrada la abre.
Cuando la ventana madre se cierra, todas las ventanas hijas lo hacen con ella....El código, en términos generales funciona bien, pero:
El problema es el siguiente: Cuando cierro manualmente la ventana hija y la vuelvo a llamar mediante la ventana principal, me genera un error debido a que una variable no se reinicializa para indicar que esta fue cerrada....Ojalá alguien tenga la solución a este pequeño inconveniente....A continuación el código:
Obviamente en todas las ventanas (principal e hijas) se hace referencia al archivo .inc
Archivo .inc:
<script language="JavaScript" type="text/JavaScript">
<!--
var ventana=new Array();
var P01=0;
//************************************************** *
function abreVentana(pagina,cont)
{
if (pagina=='Z_01.asp')
{
if (P01==0) //El valor de esta variable indica si la página está o no abierta (0=cerrada 1=Abierta). En este caso ejecuta lo que sigue si está cerrada
{
eval('ventana'+ cont + "=window.open(pagina,'ventana'+cont,'toolbar=no,me nubar=no,resizable=yes, scrollbars=yes,width = 700, height=460,top=50,left=50')");
P01=1;
}
else //Si está abierta (p01=1) entonces le hace un focus..
{
eval('ventana'+cont+".focus()");
}
}
return false;
}
//*********************************************
function Cerrar() //Cierra todas las ventanas hijas al cerrar la madre
{
for(m=1;m<=100;m++)
{
if(eval('ventana' + m))
{
eval('ventana' + m + ".close()");
}
}
}
//****************************************
function CerrarUnica(Cadena) //Supuestamente al cerrar la ventana hija de forma individual se deberia reinicializar la variable a 0 pero de alguna forma la considera como otra variable
{
eval('Cadena'+"=0");
}
//-->
</script>
Página Principal
<a href="Z_01.asp" onClick="abreVentana('Z_01.asp',1);return false;">Ventana N° 1</a><br>
Ventana Hija:
<body onUnload="CerrarUnica('P01')">