Foros del Web » Programando para Internet » Javascript »

¿ Identificar window.opener ?

Estas en el tema de ¿ Identificar window.opener ? en el foro de Javascript en Foros del Web. Yap! Bueno, la popup se abriría en el onunload? Es que haciendo pruebas, veo que netscape también reconoce perfectamente el unload situado en un frameset. ...

  #31 (permalink)  
Antiguo 21/04/2003, 13:48
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 23 años, 3 meses
Puntos: 381
Yap!

Bueno, la popup se abriría en el onunload?

Es que haciendo pruebas, veo que netscape también reconoce perfectamente el unload situado en un frameset.

Inicialmente yo pensaba que tenías una página de esas que te decia "entrar" y al clickar te abría un pop-up grandote y el resto de tu sitio se visitaba desde ese pop-up y que a la hora de cerrarlo que necesitabas saber si la opener estaba aún en tu sitio. Pensé que sería compliado el mandar una variable indicativa a tu pop-up sin saber qué página tendría cargada adentro. Pero si sólo se carga ese popup al final y se carga una única página dentro, entonces es muy facil.


Basta con que la página de tu pop-up tenga una variable declarada e inicializada por ejemplo en "abierta"

var miOpener = "abierta"

Y al frameset le puedes poner

onUnload="nombreDelaPopup.miOpener='cerrada'"

Así en todo momento tiene la popup el dato y no hay más que preguntarselo.

En cuanto a la idea de las cookies la propuse inicialmente creyendo que era una locura guardar esa variable en la popup creyendo que la popup cargaba distintas páginas (osea, que se navegaba dentro de esa ventana). De ahí saqué la idea de guardar el dato (la variable) en una cookie.

Fijate en este ejemplo , está con las cookies.

Si te gustara la idea dimelo porque recoger la cookie sólo para verla en un alert vale como está, pero para sacarle el valor y además buscarla entre el resto de cookies de tu sitio se necesita un poco más.

Si te gusta la idea te paso el script para recoger la cookie entre las demás (si no te va la idea, me lo ahorro, jejé)
  #32 (permalink)  
Antiguo 21/04/2003, 13:51
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 23 años, 3 meses
Puntos: 381
NOTA: La cookie es de una única sesión, con lo que al cerrar la opener y la popup se pierde.
  #33 (permalink)  
Antiguo 21/04/2003, 14:36
Avatar de Fr@Nc3$c0  
Fecha de Ingreso: abril-2002
Ubicación: Barcelona (Spain)
Mensajes: 710
Antigüedad: 22 años, 7 meses
Puntos: 1
Hola, gustarme la idea me gusta pero no se si me valdrá.

Puesto que en el POPUP que yo tengo quiero soltar un código que únicamente se ejecute al irse el usuario.
Con tu ejemplo del onunload y las cookies, éste codigo se ejecutaría al refrescar la página, no?

Saludos y gracias
__________________
Francesc Mula Calleja
Hay mucho por ver todavía...
  #34 (permalink)  
Antiguo 21/04/2003, 14:39
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 23 años, 3 meses
Puntos: 381
Si refrescas la página la variable queda en 'abierta' porque mete la cookie tanto en el load como en el unload

¿has probado a ver el valor de la cookie desde la popup y tras cerrar la opener volver a pedirle ver la cookie?
  #35 (permalink)  
Antiguo 21/04/2003, 14:44
Avatar de Fr@Nc3$c0  
Fecha de Ingreso: abril-2002
Ubicación: Barcelona (Spain)
Mensajes: 710
Antigüedad: 22 años, 7 meses
Puntos: 1
Entonces quedaría correctamente? me interesa pues...

Cómo lo haces? declaras variables en javascript? no sé hacerlo.. me enseñas porfavor?

saludos.
__________________
Francesc Mula Calleja
Hay mucho por ver todavía...
  #36 (permalink)  
Antiguo 21/04/2003, 15:04
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 23 años, 3 meses
Puntos: 381
Claro, fíjate


<frameset rows="80,*" frameborder="yes" border="1" framespacing="1" onload="document.cookie='miOpener=abierta'" onunload="document.cookie='miOpener=cerrada'">

Con eso, cuando se cargue, pone variable a 'abierta' y cuando se descarga la pone a 'cerrada'.

Si se actualiza no importa porque al cargar la vuelve a poner en 'abierta'. Sólo quedará en 'cerrada' si no hay un nuevo load (osea, al cerrarse o al irse a otro sitio)

La cookie es de sesión única y "vive" sólo dentro esa ventana y sus 'hijas' (incluyendo la popup). De hecho ni siquiera la puedes ver en temporales, pues no se escribe, la guarda el navegador en memoria (vendría a ser como una variable de sesión, pero que se guarda en el navegador y sólo en la ventana que la creó).
Eso si, al pedirle la cookie el navegador la reune con las que estén escritas en temporales (aunque en temporales no puedas verla escrita) por eso en la popup necesitarás un script que la busque entre las otras y le averigüe el valor.

En tu popup puedes poner este script:


Código PHP:
<script language="javascript">
function 
leer(){
miOpener document.cookie
    miOpener
=miOpener.split(";")
    for(
m=0;m<miOpener.length;m++)
        {
        if(
miOpener[m].substring(0,9)=="miOpener=")
            {
            
miOpener=miOpener[m].split("=")
            
miOpener=miOpener[1]
            break
            }
        }
    return 
miOpener
}
</script> 
Así desde la popup cuando necesites ver el valor de la variable de la cookie no tienes más que llamar a esa función.

Y yá. Esto, más lo que te comenté en el frameset.

Hecha un vistazo de nuevo al enlace que te dejé.
Ahora en la popup tienes para ver la cookie (entera, que te muestra lo que hay, y si hubieran mas variables también te las mostraría) y debajo otro para ver sólo el valor de la variable de la cookie (que te mostrará siempre el valor de esa variable, ignorando el resto de cosas que pudieras tener ahí guardadas)
  #37 (permalink)  
Antiguo 21/04/2003, 15:22
Avatar de Fr@Nc3$c0  
Fecha de Ingreso: abril-2002
Ubicación: Barcelona (Spain)
Mensajes: 710
Antigüedad: 22 años, 7 meses
Puntos: 1
Ola, estoy mirando de hacerlo en mi web y en tu último ejemplo de muestra que me muestras en el último post, si cierras la opener, la variable del popup sigue siendo abierta, no debería ser cerrada?
__________________
Francesc Mula Calleja
Hay mucho por ver todavía...
  #38 (permalink)  
Antiguo 21/04/2003, 15:25
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 23 años, 3 meses
Puntos: 381
Te da abierta tras cerrar la opener y volver a pedir la cookie??

Acabo de probarlo y una vez cerrada la opener la popup dice que está en 'cerrada' (con NS también)
  #39 (permalink)  
Antiguo 21/04/2003, 15:32
Avatar de Fr@Nc3$c0  
Fecha de Ingreso: abril-2002
Ubicación: Barcelona (Spain)
Mensajes: 710
Antigüedad: 22 años, 7 meses
Puntos: 1
bueno, entonces tengo esto colocado de la siguiente manera:

**en el load y unload del "frame" en el conjunto de marcos tengo:
~~~
onload="document.cookie='miOpener=abierta'" onunload="document.cookie='miOpener=cerrada'"
~~~
**en un frame, (cabecera) tengo :
~~~
onunload="JavaScript:window.open("popup.htm")
~~~

y en el popup coloco ese script de la variable, vale, pero cómo hago para comprobar para que si es abierto el popup se cierre y si es cerrado haga lo que yo quiero. (ejecutar codigo asp).

Assias por toda tu ayuda Tunait :-d
__________________
Francesc Mula Calleja
Hay mucho por ver todavía...
  #40 (permalink)  
Antiguo 21/04/2003, 15:59
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 23 años, 3 meses
Puntos: 381
En qué momento necesitaría la popup conocer el valor de esa variable??

La llamada a la función leer() devuelve el valor de la variable. Así en el momento en el que necesites conocer el dato, se llama a la función.

Es que como no sé la función que tiene la popup....
  #41 (permalink)  
Antiguo 21/04/2003, 16:24
Avatar de Fr@Nc3$c0  
Fecha de Ingreso: abril-2002
Ubicación: Barcelona (Spain)
Mensajes: 710
Antigüedad: 22 años, 7 meses
Puntos: 1
Cuando yo llamo a la variable me sale:


ASPSESSIONIDCCACDQBT=IJFJFGLAFLKMNBKHEDCLJBFG; miOpener=cerrada; usuario=Fr%40Nc3%24c0

todo eso en ese orden. creo que tu función no es correcta no?
Esto... cuando se crea una cookie no se le llama directamente del nombre que le has dado como asp?

Saludos.
__________________
Francesc Mula Calleja
Hay mucho por ver todavía...
  #42 (permalink)  
Antiguo 21/04/2003, 16:55
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 23 años, 3 meses
Puntos: 381
Ojalá fuera tan sencillo como leerla en asp, pero no.

A ver, el ejemplo que te dejé colgado, en la popup de los dos enlaces que hay, el primero llama a la cookie entera con todas sus variables. Es el segundo enlace el que rescata exactamente la variable dentro de la cookie.

En tu popup agrega este script

function verificar()
{
if(leer() == 'abierta')
{
self.close()
}
else
{
location.href=desconectar.asp
}
}

Y a body de tu popup le pones un onload="verificar()"

ánimo que lo sacamos
  #43 (permalink)  
Antiguo 21/04/2003, 17:13
Avatar de Fr@Nc3$c0  
Fecha de Ingreso: abril-2002
Ubicación: Barcelona (Spain)
Mensajes: 710
Antigüedad: 22 años, 7 meses
Puntos: 1
El caso es que la función leer que me diste no me da el valor de la cookie "miOpener" sino de todas las que tengo :

ASPSESSIONIDCCACDQBT=IJFJFGLAFLKMNBKHEDCLJBFG; miOpener=cerrada; usuario=Fr%40Nc3%24c0
__________________
Francesc Mula Calleja
Hay mucho por ver todavía...
  #44 (permalink)  
Antiguo 21/04/2003, 17:36
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 23 años, 3 meses
Puntos: 381
....estoy revisando, no me cambies los códigos de tu página
  #45 (permalink)  
Antiguo 21/04/2003, 18:44
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 23 años, 3 meses
Puntos: 381
No tuve en cuenta que asp crea las cookies con secuencia de escape, por eso al buscar dentro de la cadena no encontraba la variable y quedaba como undefined.


He unificado los dos scripts de la popup, cambia el js de tu popup por este

Código PHP:
<script language="javascript">
function 
leer(){
var 
miOpener 'abierta'
galleta unescape(document.cookie)
    
galleta2=galleta.split(";")
    for(
m=0;m<galleta2.length;m++)
        {
        if(
galleta2[m].substring(0,9)=="miOpener=")
            {
            
galleta3=galleta2[m].split("=")
            
miOpener=galleta3[1]
            break
            }
        }
if(
miOpener == 'abierta')
    {
    
self.close()
    }
else
    {
    
location.href=desconectar.asp
    
}
}
</script> 
y en body le pones onload="leer()"

teóricamente habría de funcionar

mañana sigo que mira que hora es

el tema está en la cadena que se recupera, no es más que eso. Cuando la reconoce bien funciona estupendo. Ahora solo falta acabar de ver cómo está la cadena creada en la cookie en tu sitio.

Bueno, ta mañana
  #46 (permalink)  
Antiguo 22/04/2003, 07:18
Avatar de Fr@Nc3$c0  
Fecha de Ingreso: abril-2002
Ubicación: Barcelona (Spain)
Mensajes: 710
Antigüedad: 22 años, 7 meses
Puntos: 1
Me parece que no funciona, siempre se cierra ahora el popup con ese script (como si siempre estuviera abierta).


Saludos y muxas gracias x tu dedicada atención.
__________________
Francesc Mula Calleja
Hay mucho por ver todavía...
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 20:23.