Foros del Web » Programando para Internet » Javascript »

preguntar por window.opener

Estas en el tema de preguntar por window.opener en el foro de Javascript en Foros del Web. Hola: Cuando abres una ventana desde otra, en la segunda puedes actuar sobre la primera trabajando con window.opener... Pero ¿como se puede preguntar en la ...
  #1 (permalink)  
Antiguo 24/01/2003, 12:58
Avatar de fjmasero  
Fecha de Ingreso: diciembre-2002
Mensajes: 488
Antigüedad: 21 años, 5 meses
Puntos: 1
preguntar por window.opener

Hola:

Cuando abres una ventana desde otra, en la segunda puedes actuar sobre la primera trabajando con window.opener...

Pero ¿como se puede preguntar en la segunda si la primera existe (por que puede ser que el usuario la haya cerrado)?.

He probado con if(window.opener) y no funciona. Pero he comprobado que si hago un if (window.opener.dato) siendo dato un componente de la pagina principal, si funciona.

¿Hay alguna forma mas eficiente o correcta de hacerlo?.

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

Última edición por fjmasero; 24/01/2003 a las 14:00
  #2 (permalink)  
Antiguo 24/01/2003, 14:13
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 fjmasero.

Lo que pasa es que cuando usas window.opener, te estás refiriendo a una propiedad de tu ventana actual que es la dirección de la ventana que la ha abierto. Esa dirección contiene una dirección en tu caso aunque dicha ventana ya no exista.

Al preguntar por uno de los atributos de dicha ventana, ya estarás direccionando al objeto en si y si te va a funcionar como efectivamente tu lo reportas.

Yo probaría por uno de los atributos genéricos del objeto window como por ejemplo:

opener.document o quizás opener.screen, es decir, prueba con una propiedad que siempre deba contener un valor no nulo. De no existir la propiedad, no existe la ventana.

Suerte.
  #3 (permalink)  
Antiguo 24/01/2003, 14:14
Avatar de Beakdan  
Fecha de Ingreso: diciembre-2001
Ubicación: Monterrey, Nuevo León
Mensajes: 433
Antigüedad: 22 años, 4 meses
Puntos: 7
Fjmasero:
Cuando cierras el opener, la ventana abierta aún conserva una referencia al objeto opener, por eso no funciona que evalues window.opener.
Pero lo que si cambia, es "window.opener.name ". Es probable que la ventana no tenga nombre, o mejor dicho que su nombre sea un empty string "". Evaluar "window.opener.name" entonces, daría como resultado false. No es de mucha utilidad (aún). Y si la ventana ha sido cerrada, evaluar "window.opener.name" te causará un error puesto que dicha propiedad ya no existe.
Entonces, usamos el operador "typeof ", el cual nos devolvera un string indicando el tipo de objeto de que se trata.

typeof window.opener.name cuando opener está abierto devuelve "string" aún cuando no tenga un nombre y devuelve "undefined" cuando lo que se evalua no existe.

Ahora, bien IE6 se comporta de un modo extraño y en lugar de devolver "undefined" devuelve "unknown". Y NS7 no hace nada cuando debería devolver "undefined".

Si esto te sirve, tu código debería quedar algo así:
Código:
function fOpener(){
  if(typeof window.opener.name == "undefined" || typeof window.opener.name == "unknown"){
    alert("Opener ha sido cerrado");
  }else{
    alert("Opener está Abierto");
  }
}
Espero que te pueda servir esta información.
Saludos.
  #4 (permalink)  
Antiguo 03/02/2003, 05:57
 
Fecha de Ingreso: enero-2003
Mensajes: 3
Antigüedad: 21 años, 3 meses
Puntos: 0
Hola,

No sé si te servirá, pero puedes preguntar desde la ventana hija si la ventana madre está abierta, con la propiedad closed:

if (window.opener.closed==true){
//está cerrada
}
else
{
//está abierta
}

Espero que te sea útil,

Eva
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 05:33.