Foros del Web » Programando para Internet » Javascript »

Cerrar ventanas desde ventana principal

Estas en el tema de Cerrar ventanas desde ventana principal en el foro de Javascript en Foros del Web. Hola maestros. Tengo tres ventanas abiertas, (popup), lo que quiero hacer es que cuando el usuario cierre la ventana principal, se cierren tambien las otras ...
  #1 (permalink)  
Antiguo 29/09/2003, 09:58
 
Fecha de Ingreso: noviembre-2002
Ubicación: Santiago
Mensajes: 45
Antigüedad: 21 años, 5 meses
Puntos: 0
Cerrar ventanas desde ventana principal

Hola maestros.


Tengo tres ventanas abiertas, (popup), lo que quiero hacer es que cuando el usuario cierre la ventana principal, se cierren tambien las otras dos de forma automatica.


Se puede?...
Como?...



- Gracias -
  #2 (permalink)  
Antiguo 29/09/2003, 12:46
Avatar de Kaopectate
Colaborador
 
Fecha de Ingreso: diciembre-2001
Ubicación: Curaçao (Antillas Holandesas)
Mensajes: 3.179
Antigüedad: 22 años, 4 meses
Puntos: 38
Hola R-maipu.

Al abrir cada popup, tenemos la posibilidad de guardar una "manija" que apunta a esa ventana. Asi:

var miVentana = open("popup.htm");

Usando esa variable, puedes cerrar el popup en cualquier momento haciendo:

miVentana.close();

Saludos.
  #3 (permalink)  
Antiguo 29/09/2003, 14:14
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
Buenas,

a ver si te sirve este script.

Pon esto en alguna parte de <head>

Código:
<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))
		{
		eval('ventana' + m + ".close()")
		}
	}
cont=0
}
</script>
No sé cómo estabas abriendo tus popups, pero deberás abrirlos con la función abreVentana(pagina) de este script. Luego le pones a body ....


<body onunload="cerrar()">

Y listos.

Lo tengó publicado aquí http://javascript.tunait.com/javascr...daslasventanas por si quieres echarle un ojo.

un saludo
  #4 (permalink)  
Antiguo 02/10/2003, 16:53
 
Fecha de Ingreso: noviembre-2002
Ubicación: Santiago
Mensajes: 45
Antigüedad: 21 años, 5 meses
Puntos: 0
Grande Maestros!!!!
  #5 (permalink)  
Antiguo 20/11/2003, 06:55
Avatar de fjmasero  
Fecha de Ingreso: diciembre-2002
Mensajes: 488
Antigüedad: 21 años, 5 meses
Puntos: 1
Exclamación + complicado aún

Wenas:

Retomo este post porque me ha surgido la siguiente cuestión.

Tengo una página desde la q se abre otra mediante un elink.

El problema q tengo para cerrar la secundaria al cerrar la principal, es q la 2ª no se puede abrir, salvo ideas en contra, mediante un variable=window.open..., pq esta debe recibir un formulario q hay en la principal, y con este método no se puede hacer un submit, según tengo entedido, insisto.

Así, como no tengo la "manija" q dice Kaopectate, en estas circunstancias, ¿como podría cerrar la secundaria al cerrar la principal?.

Salu2 y gracias.
__________________
No es sabio el que sabe sino el que no sabe y quiere aprender
  #6 (permalink)  
Antiguo 20/11/2003, 07:08
Avatar de KarlanKas
Moderador extraterrestre
 
Fecha de Ingreso: diciembre-2001
Ubicación: Madrid
Mensajes: 6.987
Antigüedad: 22 años, 4 meses
Puntos: 61

Pon en el body de la secundaria:
Código PHP:
<html>
<
head>
</
head>

<
body >
<
script>
a=0;
setInterval("if(opener && opener.closed){self.close()}else{a+=1;pepe.innerHTML='Esta ventana lleva abierta '+parseInt(a/10)+' segundos.';}",100)
</script>
<div id=pepe></div>
</body>
</html> 
__________________
Cómo escribir

No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia.

Última edición por KarlanKas; 20/11/2003 a las 07:23
  #7 (permalink)  
Antiguo 20/11/2003, 10:27
Avatar de fjmasero  
Fecha de Ingreso: diciembre-2002
Mensajes: 488
Antigüedad: 21 años, 5 meses
Puntos: 1
Hola KarlanKas:

Gracias por contestar.

¿El interval no consumira muchos recursos si la ventanita de marras está abierta durante mucho tiempo?.

Pero aún hay + complicación.

¿Y si el opener es una ventana modal?.

No es una pregunta al tun tun. Es un caso q tengo.

He aplicado tú código y al cerrar la ventana modal (tras hacer un submit), me da un error: "el servidor lanzó una excepción" sin q sepa a q se refiere, puesto q al intentar depurarlo, el Interdev dice q la excepción es desonocida y no muestra código algono.

Salu2
__________________
No es sabio el que sabe sino el que no sabe y quiere aprender

Última edición por fjmasero; 20/11/2003 a las 11:13
  #8 (permalink)  
Antiguo 20/11/2003, 12:22
Avatar de KarlanKas
Moderador extraterrestre
 
Fecha de Ingreso: diciembre-2001
Ubicación: Madrid
Mensajes: 6.987
Antigüedad: 22 años, 4 meses
Puntos: 61
Hay otra solución, que sea que al cerrarse la principal se cierre la pop up. Esto es más sencillo.

Al abrir la pop up la abres con:
ventana=window.open(...
no?

Pues en la etiqueta de body de la principal pones:

<BODY
onunload="if(ventana && !ventana.closed){ventana.close()}">
Espero que te sirva!
__________________
Cómo escribir

No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia.
  #9 (permalink)  
Antiguo 21/11/2003, 03:37
Avatar de fjmasero  
Fecha de Ingreso: diciembre-2002
Mensajes: 488
Antigüedad: 21 años, 5 meses
Puntos: 1
Sonrisa

Hola nuevamente KarlanKas :

Viamo a ve.

Cita:
El problema q tengo para cerrar la secundaria al cerrar la principal, es q la 2ª no se puede abrir , salvo ideas en contra, mediante un variable=window.open..., pq esta debe recibir un formulario q hay en la principal, y con este método no se puede hacer un submit, según tengo entedido, insisto.
Asi pues, insisto q salvo ideas en contra, lamentablemente, muy a mi pesar, no puedo usar lo q me indicas. Precisamente ese es el problema.

Salu2 y gracias.
__________________
No es sabio el que sabe sino el que no sabe y quiere aprender

Última edición por fjmasero; 21/11/2003 a las 03:44
  #10 (permalink)  
Antiguo 21/11/2003, 05:25
Avatar de KarlanKas
Moderador extraterrestre
 
Fecha de Ingreso: diciembre-2001
Ubicación: Madrid
Mensajes: 6.987
Antigüedad: 22 años, 4 meses
Puntos: 61

Y si pones:

<input type="submit" onclick="pepe=window.open('nada','pepe','width=100 ');">

y en el form:
<form action="control.php" target="pepe">

Y así tenemos la ventana abierta con un nombre para poder manejarla... o no va?
__________________
Cómo escribir

No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia.
  #11 (permalink)  
Antiguo 21/11/2003, 07:07
Avatar de fjmasero  
Fecha de Ingreso: diciembre-2002
Mensajes: 488
Antigüedad: 21 años, 5 meses
Puntos: 1
Bueno, si no recuerdo mal, y por eso no lo he probado, un onclick en un boton submit provoca que se ejecute el onclick, pero también el submit.

Ahora estoy pelin complicado, pero intentaré probarlo.
__________________
No es sabio el que sabe sino el que no sabe y quiere aprender
  #12 (permalink)  
Antiguo 21/11/2003, 07:14
Avatar de KarlanKas
Moderador extraterrestre
 
Fecha de Ingreso: diciembre-2001
Ubicación: Madrid
Mensajes: 6.987
Antigüedad: 22 años, 4 meses
Puntos: 61
Y sustituyendo el submit por esto?

<input
type="button"
onclick="pepe=window.open('nada','pepe','width=100 ');this.form.submit()">
__________________
Cómo escribir

No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia.
  #13 (permalink)  
Antiguo 21/11/2003, 07:41
Avatar de fjmasero  
Fecha de Ingreso: diciembre-2002
Mensajes: 488
Antigüedad: 21 años, 5 meses
Puntos: 1
De verdad q siento seguir dandole vueltas KarlnaKas, pero es q esta pagina es realmente puñetera.

Resulta q en el mismo formulario sirve para dos cosas.

1.- formulario para grabar datos en base de datos, mediante submit. La página, en el submit, se llama a si misma.

2.- formulario (el mismo) q mediante un link se envia a otra pagina, por lo q al hacer click en el link, se hace el submit.

Me resulta necesario tener q diferenciar el action y el target del formulario para cada caso.

Lo q hago, hasta ahora, es q cuando se hace click en el enlace se llama a una function en la q cambio el action y el target, después se hace un form.submit(), y después una nueva asignacion para el action y el targer, para asi "restablecer" los valores.
Código:
document.forms[0].action="fichero_destino_2";
document.forms[0].target = "_blank";
document.forms[0].submit();
document.forms[0].action = "fichero_destino_original"; 
document.forms[0].target = "";
Y funciona.

Además, es importante tener en cuenta q esta ventana es Modal .

Bueno, continuo.

El problema es cuando intento controlar el q cuando se cierra la ventana modal (principal), también se cierre la abierta a través del link, q, por cierto, podría no estar abierta.

Con tú solución del setInterval, da el error de una excepción desconocida.

He probaldo diferente cositas, pero na' de na'.

Entre las pruebas, he hecho que la ventana principal no fuera modal, y entonces tu setInterval va de vicio (otra cosa es q sonsuma, o no, recursos excesivos si la ventana se deja abierta mucho tiempo).

Pero es preciso q sea modal, puesto q se quiere imponer al usr la grabación de datos q se hace.

El controlar dicho control sin ventana modal, como es mucho + complicado, y lleva mucho + tiempo, me dijeron q "estaba fuera de presupuesto". Asi q ....

KarlanKas, si soy muy pesado, pasa de mi. Además, llega el fin de semana q es para desconectar, asi q si quieres, me contestas, y si no, la semana q viene, y si no, también me parece bien, puesto q te he dado bien la lata.

Salu2 y gracias
__________________
No es sabio el que sabe sino el que no sabe y quiere aprender

Última edición por fjmasero; 21/11/2003 a las 08:06
  #14 (permalink)  
Antiguo 22/11/2003, 04:20
Avatar de KarlanKas
Moderador extraterrestre
 
Fecha de Ingreso: diciembre-2001
Ubicación: Madrid
Mensajes: 6.987
Antigüedad: 22 años, 4 meses
Puntos: 61
¿Tú estás loco? Me resulta muy interesante tu problema!

Déjame darle un par de vueltas. Y no te preocupes, que no eres pesado! Si te quieres consolar mira este post. Por cierto, un saludo desde aquí a epa2!!

Así que descuida que lo sacaremos
__________________
Cómo escribir

No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia.
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




La zona horaria es GMT -6. Ahora son las 20:42.