Ver Mensaje Individual
  #17 (permalink)  
Antiguo 15/01/2004, 10:07
ascar
 
Fecha de Ingreso: diciembre-2003
Mensajes: 45
Antigüedad: 21 años, 1 mes
Puntos: 0
Ok Tunait te entendi perfecto pero segun eso en mi programa eso no parece ser lo que esta haciendo...


lo que pasa es que yo tengo dos ventanas, Ventana A y su hija la ventana B.

La ventana B se abre desde un boton en la ventana A. Cuando la ventana B se abre, el boton de la ventana A se deshabilita.

la ventana B se puede cerrar desde un boton cerrear en la ventana B, la X de la ventana B o si se cierra la ventana A.

Si cierro la ventana B el boton de la ventana A se vuelve a habilitar. Entonces para habilitarlo cuando se cierre por la X yo coloque una funcion que habilita dicho boton de la ventana A en el atributo onunload del body de la ventana B. Esto me crea un problema cuando cierro la ventana B desde el boton de cerrar debido a que para habilitar el boton de la ventana A yo hago un opener.forms[0]....., y si lo cierro desde el boton el valor de opener a cambiado.

Este es el codigo del boton cerrar:

function cerrar()
{
var ventana = window.self;
ventana.opener = window.self;
ventana.close();
}

El asunto es que no me funcionaba entonces lo que hice fue crear una variable global con el valor de 1 y decir en la funcion que corre en el onunload que si el valor es 1 entonces habilite, por otra parte si se cierra con el boton de cerrar en aquella funcion cerrar habilito el boton y le cambio el valor de esta variable a 2, evitando que corra dicho codigo.

De esta manera me funciono cerra la ventana B con la X y con el boton cerrar y habilitaba el boton en ambos casos si errores.

Luego me di cuenta que si se cierra la ventana A se debe cerrar la B, pero lo que hace es cerrar la ventana A y una vez esta este cerrada, cerrar la hijas o la ventana B, el punto esta en que cuando cierro la ventana A esta se cierra y cierra la ventana B pero me corre la funcion del onunload de la ventana B que lo que hace es habilitar un boton de la ventana A pero esta ya ha sido cerrada luego me arroja este error:

Error: El destinatario (servidor [no una aplicacion de servidor]) no esta dosponible ni presente; las conexiones no son validas. La llamada no se ejecuto

Señalandome esta linea de codigo if(eval('ventana' + m))

Entonces lo que hice fue crear en la ventana B una funcion que lo unico que hace es cambiar el valor de la variable global con el fin de que no corra lo del onunload de la ventana B y hacer colocar dentro del cuerpo del if(eval('ventana' + m)) la siguiente linea de codigo:
eval('ventana' + m + ".cambio()") /*cambio es la funcion que cambia el valor de la variable*/

La coloque que antes de la linea que cierra la ventana.

Y listo funciono cierro la ventana A y se cierra la B sin problemas.

Pero ah sorpresa me lleve cuando fui a cerrar la B y luego cerre la A salio de nuevo el error señalandome la misma linea.

Entonces quede reconfundido.

En otra ventana hice lo mismo y funciona todo perfecto pero lo que pasa es que es una unica ventana luego no necesito la funcion eval() sino que le digo vent1.cambio() y ya, en este caso no puedo hacerlo asi.

Espero no te hayas aburrido leyendo este libro y que me hayas entendido.

cualquier ayuda es bienvenida.

ascar