Foros del Web » Programando para Internet » Javascript »

Cambiar las propiedades de una ventana hija

Estas en el tema de Cambiar las propiedades de una ventana hija en el foro de Javascript en Foros del Web. Tengo problema para cambiar las propiedades de una ventana hija. Agradecería que me diesen una solución sin necesidad de tener que usar una ventana de ...
  #1 (permalink)  
Antiguo 28/11/2002, 07:08
 
Fecha de Ingreso: noviembre-2002
Mensajes: 1
Antigüedad: 21 años, 5 meses
Puntos: 0
Cambiar las propiedades de una ventana hija

Tengo problema para cambiar las propiedades de una ventana hija.

Agradecería que me diesen una solución sin necesidad de tener que usar una ventana de diálogo o alguna chapuza por el estilo, algo así como esperar a que el objeto quede totalmente creado antes de continuar la ejecución del código javascript (ya que parece que el problema es ese).

El funcionamiento deseado es el siguiente:
Al abrir el archivo "CreaSubVentana.html" en el navegador, se abrirá además otra ventana que contiene dos marcos definidos en "frmPrincipal.html" y por defecto carga en el marco "marco_Opciones" el contenido del archivo "Opciones.html" y en el marco "marco_Principal" el contenido del archivo "Principal.html".
Luego, desde la misma pagina que abrió la subventana, se accederá a la propiedad "marco_Opciones.location.href" para hacer que en el marco "marco_Opciones" se muestre el contenido del archivo "OpcionesPersonalizadas.html".

Problema encontrado:
Una vez creada la subventana no se puede acceder a sus propiedades, al no ser que antes salga una ventana de dialogo, por ejemplo una creada mediante "alert('hola');"

Para probar los efectos diferentes que se producen prueben el código del archivo "CreaSubVentana.html" con la linea "//alert('hola');" y con la línea "alert('hola');"

****

CreaSubVentana.html

<html>
<head>
<title>CreaSubVentana</title>
</head>
<body>
<h1>CreaSubVentana</h1>
<script language="javascript">
v=window.open("frmPrincipal.html","","");
//alert("hola");
v.marco_Opciones.location.href="OpcionesPersonaliz adas.html";
alert("adios");
</script>
</body>
</html>


****

frmPrincipal.html

<html>
<head>
<title>frmPrincipal </title>
<link rel='stylesheet' href='http://localhost/OAC/estilos/principal.css' type='text/css'>
</head>

<frameset rows="150px,*" frameborder="no">
<frame name="marco_Opciones" src="Opciones.html" scrolling="yes" noresize>
<frame name="marco_Principal" src="Principal.html">
</frameset>
</html>


****

Opciones.html

<html>
<head>
<title>Opciones</title>
</head>
<body>
<h1>Opciones</h1>
</body>
</html>


****

OpcionesPersonalizadas.html

<html>
<head>
<title>Opciones personalizadas</title>
</head>
<body>
<h1>Opciones personalizadas</h1>
</body>
</html>


****

Principal.html

<html>
<head>
<title>Principal</title>
</head>
<body>
<h1>Principal</h1>
</body>
</html>
  #2 (permalink)  
Antiguo 28/11/2002, 09:42
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 dalloleo_oac

Voy a hacer mis propias pruebas y te respondo lo que vea (no necesariamente esperes una solución).

Saludos.
  #3 (permalink)  
Antiguo 28/11/2002, 10:45
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
Bien, he hecho mis propias pruebas con idénticos resultados a los tuyoa aunque en mi caso, en lugar de cambiar el contenido de la página en si, estoy tratando de cambiar el valor de una variable definida en el popup.

Mi conclusión es la siguiente:

- Al ejecutar un comando open(), se crea lo que llaman un "hilo" o "thread", lo que quiere decir que se dispara algo que se va a ejecutar en paralelo con la secuencia que lo creó.

Es muy distinto este código:

var a=5;
a+=1;
alert(String(a));

donde cada comando se ejecuta una vez concluido el comando anterior , que el siguiente:

var v=open("algo.htm");
var a=1;
a+=1;

Donde el primer comando comenzó la ejecución de una ventana y sin esperar que el proceso concluya ejecuta la siguiente instrucción.

En el ejemplo que planteas, y en el mio, cuando tratas de alterar un valor del popUp, lo mas seguro es que dicho popUp aún no exista y tu comando, y el mio, fallen. Por eso, cuando le antepones un alert() funciona, porque el alert() crea un retraso en la ejecución del programa principal que le da tiempo al popUp de finalizar la creación del mismo.

En resumen, lo que te está sucediendo no es un error sino una característica del lenguaje, por lo tanto, diseña tomando en cuenta esa realidad.

Yo en tu lugar trataría de crear la ventana justamente con la página necesaria o dejaría la lógica de recarga en el mismo popUp.

Bueno, quizás esperabas un par de comandos como respuesta y te has encontrado con una proclama filosófica. Siempre es mejor que nada.

Saludos.
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:11.