js: detectar ventana abierta
6 seguidores
hola gente
Alguien sabe como podria saber por medio de javascript si una ventana abierta previamente sigue abierta???
Mexplico: al cargar una pagina home hago k salte un popup llamado 'player' que tiene musica, lo que quiero es k kuando se vuelva a la home, si el poopUp sigue abierto que no se recarge...
Un saludo!
cbp
¿has probado con <b>if (player != null)</b>?
Alter Ebro
si, eso no me rula :(
eske el nombre de la ventana la paso como cadena no como variable, me dice questa undefined.
Lo hago kon un triste window.open() alguna idea ??
txuma
Me suena que alguien planteó hace algún tiempo esta duda ( oparecida) y alguien le recomendó usar una cookie...
Alter Ebro
ok thanks! voy a probar...
meddle
pregunta obvia, ¿por que lo pasas como cadena?
Alter Ebro
porque como variable no me sale jejeje :D, lo pongo asi:
<code>
function openPlayer() {
if ( player == null ) {
var player = window.open('player.html','elPlayer','width=246,height=146');
}
}
</code>
y me la recarga :'( algo mal??
meddle
prueba
if(!elPlayer)
gandalias
Se me ocurre que lo intentes con un switch. Al abrir la ventana "hija" lo pones a true y en el evento onUnload de la ventana hija le pones a false con el objeto opener.
Ventana Madre
<code><html>
<head>
<script language="javascript">
abierta=false;
function abrirventana() {
if (!abierta) {
window.open('hija.htm','','width=100,height=100');
abierta=true;
}
}
</script>
<title>Vantana Madre</title>
</head>
<body>
<a href="javascript:abrirventana()">Abrir Ventana</a>
</body>
</html></code>
Ventana Hija
<code><html>
<head>
<title>Ventana hija</title>
</head>
<body onUnload="javascript:opener.abierta=false;">
Esta es la ventana hija
</body>
</html></code>
No se si te valdrá
Un saludo
Josh
Mira window.closed
Alter Ebro
nada, he probado de todas las formas que me proponeis pero no hay manera, tendre k probar el metodo de la cookie ...
meddle
antes de usar cookies... ¿me explicas <em>exactamente</em> como funciona tu ejemplo? (cuantos popup's abres, desde donde, como pones los enlaces html, etc etc)
EDIT: dejalo, me he leido el 1er mensaje de nuevo ;)
Alter Ebro
si claro :P
al cargar la pagina principal default.asp abro un pop-up kon un player en Flash k empieza a sonar la musica.
Si empiezas a navegar por la pagina principal el sonido sigue normal, pero al volver a default.asp vuelve a jecutar el script del popup y por lo tanto se recarga el flash, lo que yo kiero es k si ya esta abierto y navegando por la pagina principal vuelves al default.asp pos k no se recarge el player.
Solo abro esa ventana, desde default.asp en cuando se carga esta ( onLoad ), y el script pues he estado probando variaciones del k puse anteriormente con todo lo que me habeis dicho pero sin exito :(
EDIT: tarde, ya he escrito este chorizo :D
meddle
jaja, ok.
en principio, como dijo txuma, tienes que usar una cookie, pero dejame a ver si tengo algo de tiempo y pruebo a ver si se puede. aunque lo dudo pq al haber salido de default pierdes la informacion de los nombres aplicados a los popup. pero igual me equivoco.
Alter Ebro
ok, pense k igual habria alguna forma de saber los nombres las ventanas abiertas k tiene un usuario o algo asi...
weno muchas gracias gente
Josh
Alter Ebro, si la abres con:
var ventanita = window.open(bla bla);
posteriormente puedes mirar la propiedad closed y te dara un valor bool indicando si se ha cerrado.
if(ventanita.closed)
alert('ta cerrada')
meddle
eso es si no te has ido de la pagina que abre la ventana
Alter Ebro
pero no creo que esto funcione, el problema esta en k kada vez que se carga la pagina default.asp se ejecuta el script de abrir el popup y se reinicializan todas las variables.
Lo que quiero no es saber si se ha cerrado el popUp sino si sigue abierto, lo hago nojmbrando al window.open() como variable y como cada vez que se ejecuta de nuevo default.asp se vuelven a crear pos se vuelve a recargar el flash con la musica y empieza desde el principio cuando quiero que no ocurra nada en la ventana del player.
Lo que se me gha ocurrido es k al abrir el popUp este ejecute un setTime Out mandando al opener un valor de una variable a sako. Por lo tanto si existe esa variable que esta mandando repetidamente k no habra nada y si no existe pos ke la abra, aun no lo he probao, no se si es una barbaridad o igual rularia (?), porque al recargar default.asp igual esta deja de ser su window.opener
nuse nuse
gandalias
Efectivamente el problema es que al cargar la página principal vuelve a cargar la variables... No se si con una página con frames se podría solucionar. En la página que contiene la definicion de los frames incializar la variable que te diga si esta abierta y en la página con el contenido del frame (que sería la principal) preguntar.. No lo he probado pero igual estamos en las mismas (no se si desde la principal podrás "alcanzar" la de la definición de los frames ¿?¿?¿?¿?
salu!
meddle
hombre, con frames claro que se puede, pero eso es peor que usar una simple cookie o una variable en la URL.
gandalias
:roll:
Alter Ebro
ey! muy buena esa meddle, con la variable en la URL ya lo he solucionado!!! me gusta mas k la solucion de las cookies :P
porque no lo habias dicho antes cacho perro??!
Weno, muchas gracias a todos por la ayuda. Saludetes
meddle
porque intentaba encontrar otro metodo y luego no me acordé de ese hasta que dijeron "frames", entonces se activó un rebelde dentro de mi... ;)