Foros del Web » Programando para Internet » Javascript »

Cierre de ventana rebelde

Estas en el tema de Cierre de ventana rebelde en el foro de Javascript en Foros del Web. Hola a todos/todas: Buenos dias. Tengo un pequeño problema con el cierre de una página mediante javascript (Seguro que es una tonteria) . La página ...
  #1 (permalink)  
Antiguo 24/02/2011, 02:58
Avatar de Rankxerox1984  
Fecha de Ingreso: septiembre-2010
Mensajes: 253
Antigüedad: 13 años, 7 meses
Puntos: 4
Cierre de ventana rebelde

Hola a todos/todas:

Buenos dias. Tengo un pequeño problema con el cierre de una página mediante javascript (Seguro que es una tonteria).
La página en cuestión sirve para pasar el código de activación de usuario en un proceso de registro. Se contemplan varias posibilidades dependiendo de las condiciones y se abren dos posibles páginas diferentes "home" o "registro_pregunta", todo funciona bien pero lo que deseo es que, una vez efectuado el proceso de abrir las paginas (mediante window.open), me cierre la ventana de origen. Ahora se quedan las dos ventanas abiertas. He estado mirando por ahí y no he encontrado nada que me ayude a resolver el problema.

Os pongo el código (disculpad por la longitud) para ver si podéis ayudarme.

Código:
<?php session_start();
error_reporting(E_ALL);
ini_set("display_errors", 1); 

// Llamo las variables de conexión a DB  
        require_once ('../recor/LoginDB.php'); 
         
// Abro conexión y selecciono la base de datos 
    $connection = mysql_connect($host, $user, $pass) or die ("Unable to connect!");  
    mysql_select_db($db) or die ("Unable to select database!"); 
     
//Activamos el ususario 
//Recuperamos el código de activación y depuramos frente a SQLInjection 
if (isset($_GET['codigo'])) {   
        $codeACT = $_GET['codigo'];  
        $codeACT = stripslashes($codeACT); 
		
		//Comprobamos que el codigo recibido existe en la BBDD 
        $queryCHECK = mysql_query("SELECT `codigoACT` FROM `personas` WHERE `codigoACT`=$codeACT"); 
        $num_rows = mysql_num_rows($queryCHECK); 		
		switch ($num_rows) {
		//Si el código no existe derivamos a registro de nuevo 
		case 0:
		?> 
			<script language=javascript> 
				function ventanaSecundaria (URL){ 
				window.open(URL,"ventana1") 
				} 
				ventanaSecundaria("../Registro_pregunta.php");
				window.close()
				echo "Código no existe";
			</script> 
		<?php
		break;
		//Si existe 
		case 1:
		//Verificamos que el usuario no ha sido activado con anterioridad
		$queryCHECKACT = mysql_query("SELECT `activo` FROM `personas` WHERE `codigoACT`=$codeACT"); 
		
		while ($row = mysql_fetch_array($queryCHECKACT, MYSQL_NUM)) {
			
			$CheckAct = $row [0];
			}
		
		switch ($CheckAct) {
		//Si no está activo
		
			case 0;
			//Cambiamos el valor 0=desactivado  por valor 1=activado  
			$activo="1"; 
             
			//Activamos el usuario 
			$queryACT = "UPDATE personas SET `activo`=$activo Where `codigoACT`=$codeACT";  
			mysql_query($queryACT) or die(mysql_error());  
			
			//Seleccionamos las variables de sesion
			$queryVarSes = "SELECT `TipoColaborador`,`TipoAdministrador`,`activo`,`silverUser`,`goldUser` FROM `personas` WHERE `codigoACT`=$codeACT";
			$VarSes = mysql_query($queryVarSes);
			
			while ($row = mysql_fetch_array($VarSes, MYSQL_NUM)) {
			
			$TipoColaborador = $row [0];
			$TipoAdministrador = $row [1];
			$activo = $row [2];
			$silverUser = $row [3];
			$goldUser = $row [4];
		}
		
		//Registramos las variables de sesión
	
			$_SESSION["TipoColaborador"]= $TipoColaborador;
			$_SESSION["TipoAdministrador"]= $TipoAdministrador;
			$_SESSION["activo"]=$activo;
			$_SESSION["silverUser"]= $silverUser;
			$_SESSION["goldUser"]= $goldUser;		
		 
			//Y vamos a la página de inicio 

			?> 
			<script language=javascript> 
					function ventanaSecundaria2 (URL){ 
					window.open(URL,"ventana2") 
					} 
					ventanaSecundaria2("../home.php");
					window.close()
				</script> 
				
			<?php
			
			break 2;
			case 1:
			//Si el usuario ya está activo lo derivamos a la página de registro
			?> 
				<script language=javascript> 
					function ventanaSecundaria3 (URL){ 
					window.open(URL,"ventana3") 
					} 
					ventanaSecundaria3("../Registro_pregunta.php");
					window.close()
				</script> 
			<?php
			
			break 2;
			}
		}
		}else { 
        //En cualquier otro caso lo derivamos a registro 
		?> 
				<script language=javascript> 
					function ventanaSecundaria3 (URL){ 
					window.open(URL,"ventana3") 
					} 
					ventanaSecundaria3("../Registro_pregunta.php");
					window.close()
				</script> 
		<?php
      
        } 

?>
<script language="javascript"> 
function CloseWin(){
 window.opener = top ;
 window.close();
 }
</script>
Muchas gracias por anticipado
__________________
J.
¿Dónde está la tecla ‘ANY’?
(H. Simpson)
  #2 (permalink)  
Antiguo 24/02/2011, 03:07
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: Cierre de ventana rebelde

buenas...

ehhmm, ¿cual ventana dices que quieres cerrar? ¿la principal? o sea, la que abre el popup. si es asi, lamentablemente para ti eso no se puede hacer. javascript no puede cerrar una ventana que no ha abierto.

__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #3 (permalink)  
Antiguo 24/02/2011, 06:54
Avatar de Rankxerox1984  
Fecha de Ingreso: septiembre-2010
Mensajes: 253
Antigüedad: 13 años, 7 meses
Puntos: 4
Respuesta: Cierre de ventana rebelde

Hola Zerokillled:

...Pues me dejas fastidadito con la limitación.
Es obvio que he hecho algo mal ¿que crees que debo plantearme? ¿No se puede evitar de ninguna manera que se quede abierta la ventana del script de activación una vez ha lanzado cualquiera de las ventanas secundarias?

jo
__________________
J.
¿Dónde está la tecla ‘ANY’?
(H. Simpson)
  #4 (permalink)  
Antiguo 24/02/2011, 07:34
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: Cierre de ventana rebelde

y simplemente redireccionarlo??
  #5 (permalink)  
Antiguo 24/02/2011, 09:23
Avatar de Rankxerox1984  
Fecha de Ingreso: septiembre-2010
Mensajes: 253
Antigüedad: 13 años, 7 meses
Puntos: 4
Respuesta: Cierre de ventana rebelde

Hola IsabelM:

Disculpa mi ignorancia ¿Redireccionarlo? ¿Que significa exactamentente? ¿Resolvería el problema?

Un saludo,
__________________
J.
¿Dónde está la tecla ‘ANY’?
(H. Simpson)
  #6 (permalink)  
Antiguo 24/02/2011, 09:31
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: Cierre de ventana rebelde

lo que estás haciendo en abrir una ventana secundaría donde se carga Registro_pregunta.php o home.php. pues en lugar de abrir esa ventana, redirecciona al usuario a una de esas páginas
  #7 (permalink)  
Antiguo 24/02/2011, 12:41
Avatar de Rankxerox1984  
Fecha de Ingreso: septiembre-2010
Mensajes: 253
Antigüedad: 13 años, 7 meses
Puntos: 4
Respuesta: Cierre de ventana rebelde

Hola de nuevo Isabel:

En primer lugar, gracias por contestar. Vamos a ver, disculpa de nuevo mi ignorancia (es el inconveniente de no haber estudiado esto de un modo estructurado) la página esta es una página de activación de usuario cuyo enlace procede de un mail que contiene el código de activación pasado por URL (similar a http://localhost/activacion.php/?456765), la activación funciona bien y verifica que se den las condiciones para activar el usuario. Con el inconveniente de quedarse la página abierta.
Lo que no entiendo es cómo puedo solucionar el tema con tu sugerencia ¿Podrias ilustrarme el tema con un ejemplo?

Muchas gracias y disculpa mi ignorancia,
__________________
J.
¿Dónde está la tecla ‘ANY’?
(H. Simpson)
  #8 (permalink)  
Antiguo 24/02/2011, 12:47
 
Fecha de Ingreso: diciembre-2009
Ubicación: Valparaíso
Mensajes: 118
Antigüedad: 14 años, 4 meses
Puntos: 3
Pregunta Respuesta: Cierre de ventana rebelde

Cita:
Iniciado por Rankxerox1984 Ver Mensaje
...la activación funciona bien y verifica que se den las condiciones para activar el usuario. Con el inconveniente de quedarse la página abierta.
porque inconveniente??? aun no se cual es la pagina q quieras cerrar :/
  #9 (permalink)  
Antiguo 24/02/2011, 14:26
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: Cierre de ventana rebelde

entonces no hay nada que puedas hacer. yo había pensado que llegabas vinculado desde un link, recogías la variable y .... bla, bla.... como ya te dijo zerokilled , con javascript no es posible cerrar una ventana que no ha sido abierta usando este lenguaje

edito: ie si deja, aunque pide confirmación. opera y chrome lo permite sin pedir confirmación. ff no lo lo permite (Los scripts no pueden cerrar ventanas que no hayan sido abiertas por un script.)

Última edición por IsaBelM; 24/02/2011 a las 14:38
  #10 (permalink)  
Antiguo 28/02/2011, 05:04
Avatar de Rankxerox1984  
Fecha de Ingreso: septiembre-2010
Mensajes: 253
Antigüedad: 13 años, 7 meses
Puntos: 4
Respuesta: Cierre de ventana rebelde

Cita:
Iniciado por javiercitox Ver Mensaje
porque inconveniente??? aun no se cual es la pagina q quieras cerrar :/
Hola Javiercitox:

Cuando envío el mensaje de correo con el enlace de activación, también existe la posibilidad de copiar el enlace en el explorador para activar el usuario. Al hacerlo así, se ejecuta el sript y abre una página en blanco. Esta página es la que quisiera cerrar automáticamente.

Un saludo y gracias por el interés,
__________________
J.
¿Dónde está la tecla ‘ANY’?
(H. Simpson)

Etiquetas: ventanas
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 18:23.