Hola ljcl79
En la respuesta anterior a la que tu hiciste yo propuse cambiar:
if(eval('ventana' + m))
por
if(!(eval('ventana' + m+".closed"))) --Si ventana m no esta cerrada haga....
funciona un poco mejor ya que si esta cerrada la ventana no hace lo del if, en cambio en la primera este abierta o cerrada entra al if (aun no se porque)
Con mi propuesta si ventana nunca se abrio es como si estuviera cerrada, luego no entra al if. Si la ventana esta cerrada y entra al if el hace la siguiente instruccion, eval('ventana' + m + ".close()"), luego si no hay ventana pues te saldra indefinida.
Otra cosa esta funcion cerrar solo puede llamarse en el momento en que se de el evento de cerrar la ventana madre.
en fin yo tengo este codigo y me funciona....
cerrartodas.html
<html>
<head>
<script language="JavaScript">
//cerrar todas las ventanas. Script por tunait!
//http://javascript.tunait.com/
//
[email protected]
var cont = 0
function abreVentana(pagina)
{
cont++
eval('ventana'+ cont + "=window.open(pagina,'ventana'+cont,'')")
}
function cerrar()
{
for(m=1;m<=cont;m++)
{
if(!(eval('ventana' + m+".closed")))
{alert(eval('ventana'+m))
alert(m)
eval('ventana' + m + ".close()")
}
}
}
cont=0
function cerrarmadre() {
var ventana = window.self
ventana.opener = window.self
ventana.close()}
function mostrarmensaje()
{var pagina = "botoncerrar.html"
abreVentana(pagina)
}
</script>
</head>
<body onunload = "cerrar()">
<input type="button" name = "abrir" value="Abrir" onclick = "mostrarmensaje()">
<input type="button" name = "cerrar" value="cerrar" onclick = "cerrarmadre()">
</body>
</html>
botoncerrar.html
<html>
<head>
<script type="text/javascript">
function cerrar() {
var ventana = window.self
ventana.opener = window.self
ventana.close()}
function right(e) {
var msg = " no podras ver mi codigo >8) ";
if (navigator.appName == 'Netscape' && e.which == 3) {
alert(msg); // Delete this line to disable but not alert user
return false;
}
else
if (navigator.appName == 'Microsoft Internet Explorer' && event.button==2) {
alert(msg); // Delete this line to disable but not alert user
return false;
}
return true;
}
document.onmousedown = right;
</script>
</head>
<body>
<input type="button" name = "cerrar" value="cerrar" onclick = "cerrar()">
</body>
</html>
Estos dos codigos hacen lo que creo necesitas. Tiene adicionalmente que si le haces clic derecho a la pagina te sale un mesaje, creo que estaba haciendo esa prueba ahi alguna vez de pronto te sirva tambien.
Oscar