Foros del Web » Programando para Internet » Javascript »

Problemas para cerrar una ventana

Estas en el tema de Problemas para cerrar una ventana en el foro de Javascript en Foros del Web. Buenas tardes: Desde la página MAIN.ASP creo una ventana con window.open() y cargo ahí la página PENDIENTES.ASP que tiene un iframe donde carga LISTADO.ASP En ...
  #1 (permalink)  
Antiguo 18/04/2012, 13:29
Avatar de freesoftwarrior  
Fecha de Ingreso: marzo-2006
Mensajes: 362
Antigüedad: 18 años, 1 mes
Puntos: 10
Problemas para cerrar una ventana

Buenas tardes:
Desde la página MAIN.ASP creo una ventana con window.open() y cargo ahí la página PENDIENTES.ASP que tiene un iframe donde carga LISTADO.ASP

En LISTADO.ASP los links que se listan llaman a una función que hace que carguen el contenido en MAIN.ASP mediante

Cita:
function cargar(codigo)
{
parent.opener.location.href="main.asp?codigo=" + codigo;
}
El problema esta que quiero cerrar la ventana que se abrió con window.open() pero obviamente no funciona el clásico window.close() porque esta siendo invocado desde una página que no ha sido la cargada originalmente en la ventana abierta, es más, esta página, LISTADO.ASP esta cargada en un iframe.

Lo he solucionado "temporalmente" colocando en la función cargar() lo siguiente:

Cita:
function cargar(codigo)
{
parent.opener.location.href="main.asp?codigo=" + codigo;
parent.cerrar();
}
y en PENDIENTES.ASP pongo esto

Cita:
function cerrar()
{self.close();}
Pero me quedó la duda si es que hay alguna forma de poder cerrar la ventana creada desde la página cargada en el iframe.

¿Alguna idea?

Muchas gracias por el apoyo brindado
Un saludo desde Lima, Perú
  #2 (permalink)  
Antiguo 18/04/2012, 13:59
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 10 meses
Puntos: 1567
Respuesta: Problemas para cerrar una ventana

Segun tu pregunta
Cita:
cerrar la ventana creada desde la página cargada en el iframe.
LISTADO.ASP genera popups


pero según tu planteo

Cita:
En LISTADO.ASP los links que se listan llaman a una función que hace que carguen el contenido en MAIN.ASP mediante
LISTADO.PHP no crea ventanas, sino que usa como destino MAIN.ASP

Asi que no entiendo del todo

SAludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #3 (permalink)  
Antiguo 18/04/2012, 15:41
Avatar de freesoftwarrior  
Fecha de Ingreso: marzo-2006
Mensajes: 362
Antigüedad: 18 años, 1 mes
Puntos: 10
Respuesta: Problemas para cerrar una ventana

Muchas gracias por la respuesta. Si, he notado que no me he explicado según tu respuesta.

Te lo pongo en código:

MAIN.ASP
Cita:
function abrirVentana()
{
LeftPosition=(screen.width)?(screen.width-740)/2:100;
TopPosition=(screen.height)?(screen.height-500)/2:100;

ventana=window.open("pendientes.asp", "procesos_pendientes", "left="+LeftPosition+",top="+TopPosition+",width=7 40,height=500,scrollbars=0,directories=0,toolbar=0 ,location=0,status=0,resizable=0,menubar=0");
}


PENDIENTES.ASP
Cita:
<iframe src="listado.asp" name="listado" id="listado" width="100%" height="370" frameborder="0" AllowTransparency></iframe>


LISTADOS.ASP
Cita:
function cargarPendiente(proceso)
{
parent.opener.location.href="main.asp?proceso=" + proceso;
window.close();
}


<a onClick="cargarPendiente('<%= Tabla1("proceso") %>');" class="texto_normal"
onMouseOver="this.style.color='Yellow'" onMouseOut="this.style.color='White'">
<b>Nombre</b></a>

Probé haciendo una modificación en que PENDIENTES.ASP lo divido en 2 partes y una de ellas la cargo en el iframe de esta forma

PENDIENTES.ASP
Cita:
<iframe src="pendientes.asp?ver=listado" name="listado" id="listado" width="100%" height="370" frameborder="0" AllowTransparency></iframe>
pensando que como la función estaba en otra página, podría ser ese el problema. Pero no, sigue el mismo problema (obviamente la función cargarPendiente() se encuentra, en este nuevo caso, en la página PENDIENTES.ASP.

Como sea, el cargar el contenido de la función cargarPendiente siempre ha funcionado, pero no el cerrar la ventana. Por eso reemplace

window.close()

por

parent.cerrar()

Y la función cerrar() se ubica en PENDIENTES.ASP y simplemente es un self.close() y claro que funciona, sino que como digo, me interesaría saber si hay otra forma más directa para hacerlo.

Espero haberme explicado mejor en esta oportunidad

Saludos desde el Perú
  #4 (permalink)  
Antiguo 18/04/2012, 17:39
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: Problemas para cerrar una ventana

a ver si es esto lo que quieres

MAIN.ASP
Cita:
<form name="f">
<input type="text" value="" name="valor" />
</form>
PENDIENTES.ASP
Cita:
function fnc(v) {
self.opener.document.f.valor.value = v;
self.close();
}
LISTADOS.ASP
Cita:
<input type="button" value="cerrar popup" onclick="window.parent.fnc('un valor')" />
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}
  #5 (permalink)  
Antiguo 18/04/2012, 18:02
Avatar de freesoftwarrior  
Fecha de Ingreso: marzo-2006
Mensajes: 362
Antigüedad: 18 años, 1 mes
Puntos: 10
Respuesta: Problemas para cerrar una ventana

SOLUCIONADO!!!!!!!!
Y fue leyendo lo que publicaste Isabel lo que me dio la idea. Era simplemente usar parent.window.close() y queda así

MAIN.ASP
Cita:
function abrirVentana()
{
LeftPosition=(screen.width)?(screen.width-740)/2:100;
TopPosition=(screen.height)?(screen.height-500)/2:100;

ventana=window.open("pendientes.asp", "procesos_pendientes", "left="+LeftPosition+",top="+TopPosition+",wid th=7 40,height=500,scrollbars=0,directories=0,toolbar=0 ,location=0,status=0,resizable=0,menubar=0");
}

PENDIENTES.ASP
Cita:
<iframe src="listado.asp" name="listado" id="listado" width="100%" height="370" frameborder="0" AllowTransparency></iframe>

LISTADO.ASP
Cita:
function cargarPendiente(proceso)
{
parent.opener.location.href="main.asp?proceso=" + proceso;
parent.window.close();
}


<a onClick="cargarPendiente('<%= Tabla1("proceso") %>');" class="texto_normal"
onMouseOver="this.style.color='Yellow'" onMouseOut="this.style.color='White'">
<b>Nombre</b></a>

No sé como no se me ocurrió antes si viéndolo ahora es algo tan pero tan obvio, como esa vez en que desde una ventana creada con windows.open() cree otra con windows.open() y desde esta última quise cargar algo en la página desde que se creo la primera window.open() con un opener.opener.document.getElementById("").value="a lgo"

Mil gracias!!!!!!!!!
  #6 (permalink)  
Antiguo 18/04/2012, 18:03
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 10 meses
Puntos: 1567
Respuesta: Problemas para cerrar una ventana

Cita:
Iniciado por freesoftwarrior Ver Mensaje
Muchas gracias por la respuesta. Si, he notado que no me he explicado según tu respuesta.

Te lo pongo en código:

MAIN.ASP

PENDIENTES.ASP

LISTADOS.ASP

Probé haciendo una modificación en que PENDIENTES.ASP lo divido en 2 partes y una de ellas la cargo en el iframe de esta forma

PENDIENTES.ASP
pensando que como la función estaba en otra página, podría ser ese el problema. Pero no, sigue el mismo problema (obviamente la función cargarPendiente() se encuentra, en este nuevo caso, en la página PENDIENTES.ASP.

Como sea, el cargar el contenido de la función cargarPendiente siempre ha funcionado, pero no el cerrar la ventana. Por eso reemplace

window.close()

por

parent.cerrar()

Y la función cerrar() se ubica en PENDIENTES.ASP y simplemente es un self.close() y claro que funciona, sino que como digo, me interesaría saber si hay otra forma más directa para hacerlo.

Espero haberme explicado mejor en esta oportunidad

Saludos desde el Perú
Bueno, yo repetí exactamente tu esquema

main abre un pop con pendientes
pendientes tiene un iframe con listado
listado (dentro de pendientes dentro del pop) tiene un link
ese link pasa un parámetro a main (te queda algo como main.asp?procesos=xxxx
y vos querés que ese click, además de actualizar main también cierre el pop que esta abierto.
Es asi?
Suponiendo que lo sea la solución es bastante simple, tu funcion en listados debe ser

Código Javascript:
Ver original
  1. <script type="text/javascript">
  2. //<![CDATA[
  3. function cargarPendiente(proceso)
  4.  {
  5.  parent.opener.location.href="main.html?proceso=" + proceso;
  6.  parent.close();
  7.  }
  8.  
  9. //]]>
  10. </script>

Saludos

PD: agrego, te me adelantaste x un minuto, es que era tan obvio que pensé que no era eso lo que buscabas
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #7 (permalink)  
Antiguo 19/04/2012, 05:28
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: Problemas para cerrar una ventana

que bueno que te haya sido de ayuda, pero me parece mas limpia mi solución. de ese modo te evitas recargar una página ya abierta y pasarle por la query la variable
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}

Etiquetas: cerrar, funcion, ventanas
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




La zona horaria es GMT -6. Ahora son las 02:43.