Foros del Web » Programando para Internet » Javascript »

Cerrar ventana padre en Mozilla

Estas en el tema de Cerrar ventana padre en Mozilla en el foro de Javascript en Foros del Web. Hola a todos. Estoy usando mi propio código que publiqué en la FAQ 115 de JAvaScript pero no consigo hacerlo funcionar en Mozilla. A ver ...
  #1 (permalink)  
Antiguo 30/11/2004, 06:02
Avatar de Helbira  
Fecha de Ingreso: octubre-2001
Ubicación: Sevilla, España
Mensajes: 1.228
Antigüedad: 22 años, 6 meses
Puntos: 5
Cerrar ventana padre en Mozilla

Hola a todos.
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:
 
<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>
y una segunda pagina llamada ventana.html que es la pagina que se abre en mi ventan nueva:

Código:
<html>
<head>
<title>Ventana hija</title>
</head>
<body>
VENTANA HIJA
</body>
</html>
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:

"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
__________________
BUSCO TELETRABAJO
Experiencia de mas de 4 años como desarrolladora web en PHP, ASP, XML, XSL, JavaScript, MySQL, PostGres, SQLServer, ...
  #2 (permalink)  
Antiguo 01/12/2004, 13:51
 
Fecha de Ingreso: octubre-2004
Ubicación: España
Mensajes: 894
Antigüedad: 19 años, 6 meses
Puntos: 3
Hola, Helbira
He hecho varias pruebas con Firefox y, en efecto, no hay manera de que te deje cerrar la ventana inicial.
No es un problema de la identidad del "opener" --que, por otro lado, no creo que se pueda cambiar mediante script-- sino de cerrar una ventana que estaba ahí antes de que empezase el script.

Supongo que es una cuestión de seguridad. Además, piensa que el usuario puede tener abiertas otras pestañas en la misma ventana del navegador; no sé si window.close() cerraría sólo la pestaña actual o todas (lo cual tendría muy poca gracia).

Como solución alternativa, podrías "borrar" la ventana con
location.href="about:blank"

Por cierto, en Firefox tu código abre la ventana pero no está centrada.
__________________
Angel :cool:
  #3 (permalink)  
Antiguo 03/12/2004, 05:34
Avatar de Helbira  
Fecha de Ingreso: octubre-2001
Ubicación: Sevilla, España
Mensajes: 1.228
Antigüedad: 22 años, 6 meses
Puntos: 5
Muchas gracias

Gracias por tomarte tu tiempo, angel.

Respecto a la cuasisolucion de abut:blank pues no me vale.. de hecho mi ventana padre ya es una pagina en blanco.

Parece que vamos a tener que pedirle a Mozilla como se cerraria una pestaña y no el navegador.. ya que han incluido esa novedad en el navegador que den soluciones para los desarrolladores :P

GRacias por todo

Un beso
__________________
BUSCO TELETRABAJO
Experiencia de mas de 4 años como desarrolladora web en PHP, ASP, XML, XSL, JavaScript, MySQL, PostGres, SQLServer, ...
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 19:38.