Mi buen amigo programeitor, tu función, efectivamente funciona muy bien, ya la probé tal y como está. El problema principal en mi caso radicaba en que de cada "tipo" de ventana tengo que manejar "n" ventanas diferentes, no se si me explique bien, pero mira, te intentaré explicar a mas detalle mi proyecto... La ventana "opener" es un resumen de proyectos de un departamento de la empresa en donde trabajo, cada proyecto tiene diferentes fases (tipos de ventana), lo que buscaba era que de cada proyecto (en el resumen) pudieran tener abiertas las ventanas de sus diferentes fases, pero a su vez pudieran estar abiertas esas mismas ventans de "fases" para otros proyectos... Por lo que si me fue muy útil emplear código de tu función con arreglos, solo haciéndole unas cuantas adaptaciones. Luego me metí en el problema de que cada ventana con "fase" tiene forms e información, por lo que al hacer submit, se limpiaba la variable del Unload e interpretaba como si hubiese sido cerrada, lo que creaba conflictos, por lo que en el Unload de cada ventana solo tuve que modificar el codigo del Unload mandando a llamar otra funcion en donde checo mediante hidden fields si estoy haciendo submit o no, para controlar ahora si el evento unload
jejeje...
En fin, te agradezco una vez mas tu apoyo y lo confirmo, tu función sirve de maravilla!
Pegaré el codigo de la función como la modifiqué para ver si te queda un poco mas claro mi caso, que insisto, angel y tu ayudaron enormemente en ayudarme con la interfase, ahora... a seguir con la parte funcional que es en asp
Código:
windowdg = new Array();
windowconmuta = new Array();
windowctbr = new Array();
windowfuerza = new Array;
windowfdg = new Array();
windowred = new Array();
windowvsat = new Array();
windowtrans = new Array();
windowv52 = new Array();
function abre(nombre, id_proy)
{
var opciones="status,scrollbars,resizable,width=800,height=600,top=50,left=100"
if (nombre=="dg"){var url="Datos_Grales.asp?id_proy=" + id_proy;
if (windowdg[id_proy]) { windowdg[id_proy].focus() }
else { nombrev=nombre + id_proy; windowdg[id_proy]=window.open(url, nombrev, opciones); }
}
if (nombre=="conmuta"){var url ="Conmutacion.asp?id_proy=" + id_proy;
if (windowconmuta[id_proy]) { windowconmuta[id_proy].focus() }
else { nombrev=nombre + id_proy; windowconmuta[id_proy]=window.open(url, nombrev, opciones); }
}
if (nombre=="ctbr"){var url ="Ctbr.asp?id_proy=" + id_proy;
if (windowctbr[id_proy]) { windowctbr[id_proy].focus() }
else { nombrev=nombre + id_proy; windowctbr[id_proy]=window.open(url, nombrev, opciones); }
}
if (nombre=="fuerza"){var url ="Fuerza.asp?id_proy=" + id_proy;
if (windowfuerza[id_proy]) { windowfuerza[id_proy].focus() }
else { nombrev=nombre + id_proy; windowfuerza[id_proy]=window.open(url, nombrev, opciones); }
}
if (nombre=="fdg"){var url ="FDg.asp?id_proy=" + id_proy;
if (windowfdg[id_proy]) { windowfdg[id_proy].focus() }
else { nombrev=nombre + id_proy; windowfdg[id_proy]=window.open(url, nombrev, opciones); }
}
if (nombre=="red"){var url ="Red.asp?id_proy=" + id_proy;
if (windowred[id_proy]) { windowred[id_proy].focus() }
else { nombrev=nombre + id_proy; windowred[id_proy]=window.open(url, nombrev, opciones); }
}
if (nombre=="vsat"){var url ="Vsat.asp?id_proy=" + id_proy;
if (windowvsat[id_proy]) { windowvsat[id_proy].focus() }
else { nombrev=nombre + id_proy; windowvsat[id_proy]=window.open(url, nombrev, opciones); }
}
if (nombre=="trans"){var url ="Transporte.asp?id_proy=" + id_proy;
if (windowtrans[id_proy]) { windowtrans[id_proy].focus() }
else { nombrev=nombre + id_proy; windowtrans[id_proy]=window.open(url, nombrev, opciones); }
}
if (nombre=="v52"){var url ="V52.asp?id_proy=" + id_proy;
if (windowv52[id_proy]) { windowv52[id_proy].focus() }
else { nombrev=nombre + id_proy; windowv52[id_proy]=window.open(url, nombrev, opciones); }
}
}
Ahora bien, tal vez seria menos codigo utilizando arreglos bidimensionales (que por cierto no se si existan en javascript, pero por motivos de tiempo y solo haciendo copy-paste en algunas secciones, la funcion, aunque enorme, la deje asi
En cada ventana hija tuve que colocar esto en el body:
Código:
<body bgcolor="#FFFFFF" text="#000000" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0" onUnload="javascript:checacierre('<%=id_proy%>')">
y la otra funcion:
Código:
function checacierre(id_proy)
{
if (document.form1.bandera.value=='si') {
}
else {
opener.windowconmuta[id_proy]=null
}
}
De nuevo Mil Gracias Programeitor!!!
Aaaaaah y tambien a Angel
Saludos!!!