Foros del Web » Programando para Internet » Javascript »

Poder abrir un window.open si no esta ya abierto

Estas en el tema de Poder abrir un window.open si no esta ya abierto en el foro de Javascript en Foros del Web. Hola, me gustaria saber, si el usuario ha generado un popup con un "window.open" en mi web, ¿Que hago para que hasta que no lo ...
  #1 (permalink)  
Antiguo 15/07/2008, 05:43
 
Fecha de Ingreso: septiembre-2005
Ubicación: Valencia
Mensajes: 738
Antigüedad: 18 años, 7 meses
Puntos: 5
Pregunta Poder abrir un window.open si no esta ya abierto

Hola, me gustaria saber, si el usuario ha generado un popup con un "window.open" en mi web, ¿Que hago para que hasta que no lo cierre no pueda abrirlo otra vez?

Desde ya muchas gracias.
  #2 (permalink)  
Antiguo 16/07/2008, 08:20
Avatar de Markcoz  
Fecha de Ingreso: noviembre-2006
Mensajes: 158
Antigüedad: 17 años, 5 meses
Puntos: 2
Respuesta: Poder abrir un window.open si no esta ya abierto

haz probado utilizar una variable global que haga las veces de bandera y cuando habras un popup le pones un status como activa, cuando intente abrir un popup verificas si la variable tiene estatus de activa ps no ejecutas el codigo que genera el popup
  #3 (permalink)  
Antiguo 16/07/2008, 11:25
 
Fecha de Ingreso: septiembre-2005
Ubicación: Valencia
Mensajes: 738
Antigüedad: 18 años, 7 meses
Puntos: 5
Pregunta Respuesta: Poder abrir un window.open si no esta ya abierto

Bueno esque la cosa es mas diferente (Es un mapa de un juego online) veamos, el usuario genera un window.open, pero luego cuando vuelve a moverse en el mapa (recarga la pagina) quiero que esta ventana se cierre, pero como la ventana padre se ha actualizado la variable global se pierde,
¿Hay una manera de que, si la ventana padre se refresca o cambia de direccion, el popup se cierre?

Gracias y un saludo.
  #4 (permalink)  
Antiguo 16/07/2008, 11:45
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 2 meses
Puntos: 772
Respuesta: Poder abrir un window.open si no esta ya abierto

Hola astut

A ver si te sirve esto. Creas la variable global ventana, abres el pop-up:

Código:
ventana = window.open('algo.html');
y en la ventana principal:

Código:
<body onunload = "ventana.close()">
Es sólo una idea. No estoy seguro, pero es posible que tengas que comprobar si el pop-up está abierto antes de cerrarlo.

Saludos,
  #5 (permalink)  
Antiguo 16/07/2008, 11:58
 
Fecha de Ingreso: abril-2008
Mensajes: 32
Antigüedad: 16 años
Puntos: 0
Respuesta: Poder abrir un window.open si no esta ya abierto

Tengo dos posibles soluciones.

1. Que tu variable global sea una cookie.
2. Que antes de hacer tu window.close en la ventana emergente hagas un oponer.document.form.variableoculta.value = "Valor", luego en tus paginas donde quieres abrir nuevamente un window.open, preguntas si el valor de tu campo oculto(variableoculta) es igual al valor que enviaste en el window.close si es asi entonces puedes abrir nuevamente la ventana.

Espero te haya ayudado.

Saludos
  #6 (permalink)  
Antiguo 17/07/2008, 05:10
 
Fecha de Ingreso: septiembre-2005
Ubicación: Valencia
Mensajes: 738
Antigüedad: 18 años, 7 meses
Puntos: 5
Respuesta: Poder abrir un window.open si no esta ya abierto

Hola ¿Y como compruevo que la cookie ventana (en javascript) tiene un window.open asignado?: (Si lo tiene quiero que lo cierre)
Código:
ventana= document.cookie;
ventana= window.open(url, "_blank", "width="+ancho+", height="+alto+", scrollbars=no, resizable=no, location= center");
Un saludo y gracias.
  #7 (permalink)  
Antiguo 17/07/2008, 16:52
 
Fecha de Ingreso: septiembre-2005
Ubicación: Valencia
Mensajes: 738
Antigüedad: 18 años, 7 meses
Puntos: 5
Respuesta: Poder abrir un window.open si no esta ya abierto

¿Alguien que sepa de gestion de cookies con javascript?
(JavierB probe tu codigo pero no funciona)

Gracias.
  #8 (permalink)  
Antiguo 18/07/2008, 08:51
Avatar de Markcoz  
Fecha de Ingreso: noviembre-2006
Mensajes: 158
Antigüedad: 17 años, 5 meses
Puntos: 2
Respuesta: Poder abrir un window.open si no esta ya abierto

uhm para empezar no eres muy claro en explicar bien q es lo que deseas, creo q si haces una combinacion de ambas soluciones t puede funcionar porque para empezar con la variable global no te deja abrir porque ya lo tienes abierto, segundo si la ventana padre se recarga o cambias a otra con el codigo de javierB cierras el popup q tenias abierto...al menos yo entendi q eso es lo que necesitas....
  #9 (permalink)  
Antiguo 19/07/2008, 04:40
 
Fecha de Ingreso: septiembre-2005
Ubicación: Valencia
Mensajes: 738
Antigüedad: 18 años, 7 meses
Puntos: 5
Pregunta Respuesta: Poder abrir un window.open si no esta ya abierto

Hola, gracias, si tienes razon, pero antes, tengo que comprobar si esa ventana se ha abierto porque sino no funciona correctamente (Se cierra la propia pagina), ¿Como compruevo que el objeto ventana existe?

Gracias.
  #10 (permalink)  
Antiguo 19/07/2008, 16:30
 
Fecha de Ingreso: septiembre-2005
Ubicación: Valencia
Mensajes: 738
Antigüedad: 18 años, 7 meses
Puntos: 5
Respuesta: Poder abrir un window.open si no esta ya abierto

Hola, bueno veo que nadie responde.
Lo que busco es comprobar si el objeto "ventana" (ventana= window.open) ha sido creado y si ha sido creado, que se cierre, ¿Como lo hago? creo que debe ser simple (Todo esto para el body onlunload)

Un saludo!
  #11 (permalink)  
Antiguo 20/07/2008, 18:00
 
Fecha de Ingreso: septiembre-2005
Ubicación: Valencia
Mensajes: 738
Antigüedad: 18 años, 7 meses
Puntos: 5
Respuesta: Poder abrir un window.open si no esta ya abierto

Es imple, comprobar si un objeto javascript existe (en este caso proveniente de un objeto= window.open)
¿De verdad es tan dificil?

Un saludo.
  #12 (permalink)  
Antiguo 20/07/2008, 19:27
Avatar de derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 20 años, 6 meses
Puntos: 45
Respuesta: Poder abrir un window.open si no esta ya abierto

Hola astut:

Prueba con este try & catch:
Código PHP:
var ventana window.open();
try {
    
ventana.close();
} catch(
elError) {
    
alert("La ventana no estaba creada, el error es \r\n"+elError.message);

No dará error porque lo capturamos.


Saludos.
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.
  #13 (permalink)  
Antiguo 21/07/2008, 05:49
 
Fecha de Ingreso: septiembre-2005
Ubicación: Valencia
Mensajes: 738
Antigüedad: 18 años, 7 meses
Puntos: 5
Respuesta: Poder abrir un window.open si no esta ya abierto

Hola,
Código HTML:
try 
	{
    	ventana.close();
	} 
	catch(elError) 
	{}  
	ventana= window.open(url, "_blank", "width="+ancho+", height="+alto+", scrollbars=no, resizable=no, location= center");
	return false;
Sige sin funcionar, abro una ventana usando esta funcion y cuando vuelvo a usar la funcion, me abre otra ventana sin cerrar la anterior.
¿Que le falta?

Gracias por responder.
  #14 (permalink)  
Antiguo 21/07/2008, 06:23
Avatar de derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 20 años, 6 meses
Puntos: 45
Respuesta: Poder abrir un window.open si no esta ya abierto

Hola de nuevo:

No sé si estoy perdido en el tema, ya son muchos post para una misma cuestión. Lo que quieres hacer es que si una ventana está abierta no se abra; y que si no está abierta se abra ¿es así?

Jugando con el try & catch podría ser así:
Código PHP:
<button onclick="abreVentana('http://mipagina.com', 200, 200)">abrir si no esta abierta cerrar la abierta</button>

<
script type="text/javascript">
<!--


var 
ventana;
function 
abreVentana(urlanchoalto) {
    try {     
// existe
        
ventana.close();
    } 
    catch(
elError) {     // no existe
        
ventana window.open(url"_blank""width="+ancho+", height="+alto+", scrollbars=no, resizable=no, location= center");
    }  
    return 
false;
}

// -->
</script> 
En la parte del try se ejecuta todo lo que quieras cuando la ventana existe (es decir, usas la variable ventana sin problemas, y si da error entonces se captura). Por lo tanto si no existe, se ejecuta el catch().

Si quieres que se abra una nueva ventana en el try no tienes más que duplicar la línea de window.open().


¿Es así?
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.
  #15 (permalink)  
Antiguo 21/07/2008, 07:14
 
Fecha de Ingreso: septiembre-2005
Ubicación: Valencia
Mensajes: 738
Antigüedad: 18 años, 7 meses
Puntos: 5
Respuesta: Poder abrir un window.open si no esta ya abierto

Hola,
Si es asi, pero sige ocurriendo..
Código HTML:
var ventana;
function Ventana(url, ancho, alto)
{
	//Si ya hay una ventana abierta, la cerramos
	try 
	{
    	ventana.close();
	} 
	catch(elError) 
	{ventana= window.open(url, "_blank", "width="+ancho+", height="+alto+", scrollbars=no, resizable=no, location= center");}  
	return false;
}
Sigen abriendose ventanas sin que se cierre la anterior. Por cierto algo que igual no sabiais, una vez que se abre una ventana, para que se vuelva a ir el usuario tiene que recargar la pagina, por lo tanto creo que la variable "ventana" desaparece, si es asi, ¿Como lo hago entonces?

Gracias
  #16 (permalink)  
Antiguo 21/07/2008, 11:35
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 19 años, 11 meses
Puntos: 834
Respuesta: Poder abrir un window.open si no esta ya abierto

Para eso hay que cambiar el nombre del segundo parámetro del método open (_blank no sirve, hay que definir otro y mantenerlo constante). Además, habría que cerrarla al refrescar la página. Probá así:
Código PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<
html xmlns="http://www.w3.org/1999/xhtml">
<
head>
<
meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<
title></title>
<
script>
var 
v;
function 
ventana(u,a,b){
    
v=window.open(u,'pp','width='+a+',height='+b);
    
v.focus();
}
window.onunload=function(){try{v.close();}catch(e){};}
</script>

</head>

<body>
<a href="javascript:ventana('http://www.google.com',500,500);void(0);">test</a>
</body>
</html> 
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 13:19.