Foros del Web » Programando para Internet » Javascript »

Cerrar ventanas hijas por medio de la ventana padre

Estas en el tema de Cerrar ventanas hijas por medio de la ventana padre en el foro de Javascript en Foros del Web. que tal, tengo un script que lo que hace es un manejo de ventanas, basicamente se compone de 3 funciones una que abre una nueva ...
  #1 (permalink)  
Antiguo 11/02/2009, 12:13
Avatar de drac94  
Fecha de Ingreso: mayo-2008
Ubicación: México
Mensajes: 383
Antigüedad: 16 años
Puntos: 5
Cerrar ventanas hijas por medio de la ventana padre

que tal, tengo un script que lo que hace es un manejo de ventanas, basicamente se compone de 3 funciones una que abre una nueva ventana y guarda un identificador en un array, otra que cierra todas las ventanas y por ultimo una que elimina el identificador del array si se cierra la ventana manualmente

si funciona, pero tiene un problema, la funcion que cierra todas las ventanas no se por que siempre se brinca la segunda, lo voy a poner para que lo vean y les explique mejor

Código PHP:
var lVentanas  = new Array()
function 
abreVentana(pagina,id){
    
false
    
for(0lVentanas.lengtht++){
        if(
lVentanas[t]== id){
            
true;
            break;
        }
    }
    if(!
e){
    eval(
id+"=window.open(pagina,'" id "')")
        
lVentanas[lVentanas.length] = id
    
}else{
    eval(
id).focus();
    }
    
alert(lVentanas.length);
}

function 
cerrar(){
alert(lVentanas.length);
    for(
m=0;m<lVentanas.length;m++){
    eval(
lVentanas[m]).close()
}
    
lVentanas.length 0
}

function 
cerrarUnica(id){
var 
lVentanasAux  = new Array()
var 
i=0;
for(
0lVentanas.lengtht++){
        if(
lVentanas[t]!= id){
            
lVentanasAux[i]=lVentanas[t];
            
i++;
        }
}
lVentanas = [].concat(lVentanasAux);

la funcion cerrar es en donde se cierran todas las ventanas, si ven lo unico que hace es recorrer el array e ir cerrando cada ventana, pero se brinca una, si en vez de
Código PHP:
eval(lVentanas[m]).close() 
pongo un
Código PHP:
alert(lVentanas[m]) 
si me muestra todos los elementos del array, pero si pongo esas 2 instrucciones juntas, tmb el alert se brinca una, a ver si me pueden ayudar, Gracias

ah y otra cosa es q el metodo focus en el mozilla no funciona y en el IE si, y no he encontrado como solucionarlo

ya por ultimo en cada ventana que abro tengo esto en el body
Código PHP:
<body onUnload="window.opener.cerrarUnica('id1')"
  #2 (permalink)  
Antiguo 12/02/2009, 06:52
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 2 meses
Puntos: 574
Respuesta: Cerrar ventanas hijas por medio de la ventana padre

Cambia esto

lVentanas[lVentanas.length] = id

por esto

lVentanas.push(id);

Creo que funcionará.... no se... como minimo es mas elegante.

Tambien cambiaria la funcion para eliminar una unicaventana y usaria la función

The splice() method is used to remove and add new elements to an array.

Te ahorraras matrices auxiliares...

Quim

Última edición por quimfv; 12/02/2009 a las 07:00
  #3 (permalink)  
Antiguo 12/02/2009, 09:27
Avatar de drac94  
Fecha de Ingreso: mayo-2008
Ubicación: México
Mensajes: 383
Antigüedad: 16 años
Puntos: 5
Respuesta: Cerrar ventanas hijas por medio de la ventana padre

Hola Quim, muchas gracias por los consejos, ya cambie el codigo pero aun tengo el problema original, no se por que no me cierra todas las ventanas la funcion cerrar(), siempre me deja una abierta, o sea, el array si se llena bien pero el problema esta cuando la funcion cerrar lo recorre no se por que se brinca uno, no se si se te ocurra algo, ah y tmb lo del focus en el mozilla no sabes por que no funciona, bueno bye
  #4 (permalink)  
Antiguo 12/02/2009, 13:36
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 2 meses
Puntos: 574
Respuesta: Cerrar ventanas hijas por medio de la ventana padre

Has observado si la ventana que deja abierta... es simpre la misma o tiene alguna relación con algo?

En cuanto a lo del focus, no se pero ya sabes que hay diferencias entre el modelo de objetos de los navegadores especialmente en el tratamiento de las ventans. Seguro que si buscas encontraras la solucion, pero tendras que detectar el navegador del cliente y lanzar codigos alternativos segun sea uno u otro... busca focus multiplataforma javascript o algo así.

Quim
  #5 (permalink)  
Antiguo 12/02/2009, 15:15
Avatar de drac94  
Fecha de Ingreso: mayo-2008
Ubicación: México
Mensajes: 383
Antigüedad: 16 años
Puntos: 5
Respuesta: Cerrar ventanas hijas por medio de la ventana padre

De hecho siempre lo probaba con 3 paginas y siempre me dejaba la segunda, ahora q le puse mas paginas me di cuenta q solo me cierra la primera y la tercera nadamas, gracias por tu respuesta
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 11:42.