Estoy usando mi propio código que publiqué en la FAQ 115 de JAvaScript pero no consigo hacerlo funcionar en Mozilla. A ver si me podeis ayudar a completar el código para que funcione también en este navegador.
Lo que tengo es una pagina que abre una ventana sin pedir confirmación. Se llama pagina 1.html con el siguiente codigo:
Código:
y una segunda pagina llamada ventana.html que es la pagina que se abre en mi ventan nueva:<html> <head> <script language="javascript"> // Esta función posiciona la ventana popup en el centro de la pantalla function abreVentanaCentrada() { var url=arguments[0]; var nombre=arguments[1]; var anchoVentana=arguments[2]; var altoVentana=arguments[3]; var configuracion = arguments[4]; var anchoPantalla = screen.width; var altoPantalla = screen.height; var estilo =""; if(arguments.length<5) estilo = "titlebar=no,menubar=no,location=no,status=no,directories=no,toolbar=no,border=no,resizable=yes,width="+anchoVentana+",height="+altoVentana; else estilo = configuracion + ",width="+anchoVentana+",height="+altoVentana; if(anchoPantalla==800 && altoPantalla==600) { if (navigator.appName.toLowerCase() == "navigator") estilo = estilo + ",screenY=0,screenX=0"; else estilo = estilo + ",top=0,left=0"; } else { if(altoVentanaPadre==0 && anchoVentanaPadre==0) { var distanciaArriba = (altoPantalla/2)-(altoVentana/2); var distanciaLateral = (anchoPantalla/2)-(anchoVentana/2); if (navigator.appName.toLowerCase() == "navigator") estilo = estilo + ",screenY="+distanciaArriba+",screenX="+distanciaLateral; else estilo = estilo + ",top="+distanciaArriba+",left="+distanciaLateral; } else { if (navigator.appName.toLowerCase() == "navigator") { var distanciaArriba = (altoPantalla/2)-(altoVentana/2); var distanciaLateral = (anchoPantalla/2)-(anchoVentana/2); estilo = estilo + ",screenY="+distanciaArriba+",screenX="+distanciaLateral; } else { var altoVentanaPadre = top.screenTop; var anchoVentanaPadre = top.screenLeft; var anchuraPadre=top.document.body.offsetWidth; var alturaPadre=top.document.body.offsetHeight; var distanciaArriba = (altoVentanaPadre+(alturaPadre/2))-(altoVentana/2); var distanciaLateral = (anchoVentanaPadre+(anchuraPadre/2))-(anchoVentana/2); estilo = estilo + ",top="+distanciaArriba+",left="+distanciaLateral; } } } return window.open(url,nombre,estilo); } </script> </head> <body> <script language="JavaScript"> var elemVen = abreVentanaCentrada('ventana.html','gestionestructura',800,535); sAgent = navigator.userAgent; if(sAgent.indexOf("IE 4") > -1 || sAgent.indexOf("IE 5.0") > -1) { //NO SE HACE NADA } else { ventana = window.self; ventana.opener = window.self; } ventana.close(); </script> ESTOY EN LA VENTANA PADRE </body> </html>
Código:
pagina1.html abre una ventana nueva y a continuacion quiero que se cierre pero no me funciona ese codigo en Mozilla. El error javascript que me da es el siguiente:<html> <head> <title>Ventana hija</title> </head> <body> VENTANA HIJA </body> </html>
"Scripts no pueden cerrar ventanas que no se abrieron mediante script."
Alguna idea. Supongo que como intento cerrar una ventana que no se abrió desde otra ventana con código de script pues no me deja cerrarla.. pero por eso mismo se le intenta engañar al navegador redefiniendo su Opener.
Nuse..
Gracias
Un beso