PDA

Ver la Versión Completa : Pasar parametros, ¿Es posible?


chrids506
02-05-2006, 16:06:17
Hola comunidad, mi caso es el siguiente, aunque voy en contra de los frames, y no me gustan para nada, esta vez fue una gran solución para mi problema, abro un pop-up donde hay 3 frames, uno topFrame, donde se carga el título, otro botFrame, donde se carga la firma, y el otro mainFrame, que es donde viene el problema, aquí he de cargar el contenido al que la persona quiere ir al cliquear en la página anterior(donde se abrió el pop-up), por ejemplo en la página principal, hay 2 enlaces, fotos de gatos, y fotos de perros, entonces, al hacer clic sobre gatos se abre el pop-up, en el mainFrame, se cargan las imágenes de gatos, si por el contrario se cliquea perros se abre en el mainFrame la página de imágenes de los perros.
Ahora mi pregunta es como puedo abrir la pagina del pop-up, y hacerla cargar la página deseada, talvez mandando parametros, ¿es posible?, ¿como?.
P.D.: Es indispensable mandar a una pagina que carge el mainFrame, ya que son más de 200 páginas las que en un momento determinado se cargarán en el mainFrame, y hacer una página de marcos por cada una no es una oferta muy tentadora.
Espero que me puedan ayudar, gracias de antemano

reevil
02-05-2006, 23:30:02
la verdad no entiendo muy bien el problema, tampoco entiendo el por que usar los frames en el pop up... yo pondria el titulo y el pie en cada pagina y ya no usaria frames, si no existe esa posibilidad de eso podrias utilizar un javascript con el objeto document y el metodo write () lo cual te permitiria crear dinamicamente el popup

function popup(url)
{
.....
......
}


el url se lo pasas a la funcion directo desde link
ahi hay informacion al respecto
http://www.webestilo.com/javascript/js22.phtml

o buscando en google hay mucha mas
saludos

kayetano
03-05-2006, 10:06:28
Hola

Como bien dice reevil:
function popup(url)
{
miVentana = window.open(...); // Abres el POPUP
miVentana.frames[0].location = url; // hay que cambiar el numero del frame.
...
}

chrids506
03-05-2006, 15:26:00
Gracias a los 2 por responder lo voy a probar, gracias de nuevo

chrids506
03-05-2006, 16:08:09
he puesto esto:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script language=javascript>
function popup(url){
miVentana = window.open("indes.htm","Ventana","width=400,height=600,scrollbars=NO"); // Abres el POPUP
miVentana.frames[0].location = url; // hay que cambiar el numero del frame.
}
</script>
</head>

<body>
<a href="javascript:popup('center2.htm')">ir</a>
</body>
</html>

Pero aunque me abre a la perfección el pop-up, no me abre bien el frame, es más no hace nada, alguna idea de por que, y disculpe mi innorancia

kayetano
03-05-2006, 16:33:59
Hola

He hecho un par de pruebas y efectivamente no funciona, el problema es que la segunda sentencia se ejecuta cuando aún no se ha abierto la ventana.

Puedes probar este ejemplo:

function popup(url){
miVentana = window.open("b.html","Ventana","width=400,height=600,scrollbars=NO"); // Abres el POPUP
setTimeout( "miVentana.frames[0].location = '"+ url +"'", 500 ); // hay que cambiar el numero del frame.
}

chrids506
03-05-2006, 16:44:32
Esta vez si sirvió, muchas gracias.

roman
04-05-2006, 02:10:55
Otra opción que parece funcionar es asignar la url como propiedad del objeto window:


<script type="text/javascript">
function popup(url)
{
miVentana = window.open(...);
miVentana.mainUrl = url;
}
</script>


y leer dicha propiedad en el evento onload del frameset:


<frameset rows="60,*,60" onload="frames[1].location=mainUrl">
<frame src='' name=''>
<frame src='' name=''>
<frame src='' name=''>
</frameset>


// Saludos

chrids506
04-05-2006, 16:27:51
Gracias a todos por las respuestas, la verdad es que me han ayudado mucho.

y leer dicha propiedad en el evento onload del frameset:
Pregunto, y disculpa mi innorancia, si no me equivoco, puedo mandar, en lugar de una url un texto como "center2"

miVentana.mainWord := "center2";

como hago para leer esta variable, y hacer condiciones, por ejemplo que si mainword = "center2" entonces vaya a center2.htm

gracias de antemano.

roman
04-05-2006, 17:53:44
Lees la propiedad tal como te indiqué. Lo que pasa es que cuando haces

miVentana.mainUrl = url;

le estás agregando la propiedad mainUrl al objeto window miVentana. Por otra parte, el objeto window es el objeto por defecto en javascript, de manera que cuando haces:

frames[1].location=mainUrl;

en el evento onload, en realidad estás haciendo:

window.frames[1].location=window.mainUrl;

y así mismo, puedes agregar cualquier propiedad que desees al objeto. De hecho, en javascript puedes agregar propiedades y métodos sobre la marcha a cualquier objeto.

Si el tratamiento que quieres hacer es más complicado puedes delegar el evento onload a una función javascript:

onload='docLoad()';


function docLoad()
{
switch (window.mainUrl)
{
// aquí las distintas opciones
}
}


Sin embargo, a mi ya se me escapa el porque querrías ahora hacer un condicional aquí. Es precisamente lo que evitas al pasar la url como parámetro.

// Saludos

chrids506
04-05-2006, 18:21:25
lo que quiero es sencillo, es como el las páginas download.php?id="loquesea"

por ejemplo y temiendome meterme en otro tema, que yo pueda hacer un vínculo:
ir.html?id="gatos"
ir.html?id="perros"
y en el primer caso me redireccione a la página de gatos, y en el segundo me mande a la página de perros.

la pregunta en concreto es como puedo hacer para leer la variable id del link, para luego en un script decidir hacia donde ir, y como puedo hacer ese if condicional, para saber hacia donde ir.

Gracias.

chrids506
06-05-2006, 16:20:22
Olviden la respuesta anterior, es una idea que he descartado, ahora mi problema es que si en lugar de usar un pop-up, quiero abrirlo en la misma página no me recibe la redirección, pensé que este código podria funcionar, pero no fué así:
<script language=javascript>
function ir(url){
miVentana = window;
miVentana.location = "indes.htm";
setTimeout( "miVentana.frames[1].location = '"+ url +"'", 500 );
}
</script>
¿alguna idea?

roman
06-05-2006, 19:19:41
Y si abres en la misma página, ¿para qué, digo yo, quieres hacerlo através de javascript? ¿Por qué no simplemente pones el enlace y ya?

// Saludos

chrids506
06-05-2006, 20:16:35
¿Por qué no simplemente pones el enlace y ya?

Si se puede fantástico, pero el enlace va desde una página sin frames, así que tiene que cargar la página de frames, y luego cargar la página a la que se quiere ir en el frame[1].

roman
06-05-2006, 20:50:39
Cierto, olvidaba lo de los marcos. Al parecer el objeto window se regenera en cada cambio de url por lo que no es el mismo antes y después de navegar por el enlace.

Una posible solución:


function ir(url)
{
window.location = 'pagina_de_marcos.html?' + url;
}


En el evento onload de la página de marcos:


function framesLoad()
{
mainUrl = window.location.search.substring(1);
window.frames[1].location = mainUrl;
}


location.search es la parte del url desde el signo ?

// Saludos

jzegarra
21-11-2007, 02:06:23
Como estas dentro de un frame, usas los obejtos de ese frame.

Para poder actualizar propiedades en este caso URL a otro frame lo que se debe de escribir es:

window.top.frames("Cuerpo").location = URL;

La propiedad top te lleva a un nivel superior del frame que estas ejecutanto el javascript, luego utilizar el frame que quieres cambiar.

Saludos

Junior

kayetano
23-11-2007, 18:21:03
Hola

No se si te has dado cuenta pero este hilo es de hace un año y medio ;)
Ya puestos, es mejor que utilice capas (div) en vez de marcos (frames).