Foros del Web » Programando para Internet » Javascript »

Error al abrir pagina de frames

Estas en el tema de Error al abrir pagina de frames en el foro de Javascript en Foros del Web. Llevo un buen rato peleandome con una cosilla q me trae de cabeza, a ver si me podeis echar un cable. Hice una web hace ...
  #1 (permalink)  
Antiguo 08/11/2004, 15:46
 
Fecha de Ingreso: junio-2003
Mensajes: 744
Antigüedad: 20 años, 10 meses
Puntos: 0
Error al abrir pagina de frames

Llevo un buen rato peleandome con una cosilla q me trae de cabeza, a ver si me podeis echar un cable.

Hice una web hace un tiempo de muebles, esta web tiene un index que esta formado por dos frames (menu y donde carga lo del menu).
Ahora desde otra web distinta quiero enlazar a la web de los muebles cargando el index con el menu igual pero donde carga las cosas con una pagina en concreto.

Mirando mirando y mirando, he llegado a esto:

<a href=javascript:;
onClick="top.menu.location.href='paginamenu';
top.contenidos.location.href='ficha del inmueble'">
Enlace doble</a>

Teniendo en cuenta que menu es el nombre del frame del menu y contenidos el nombre del frame donde carga las paginas.

Este script que os he puesto me da un error que top.menu esta vacio..
Creo que es porque lo utilizo fuera de esa pagina y sin niguna ventana abierta...

Podriais ayudarme? es muy urgente

Muchas gracias,
__________________
Ibisof | Saludos desde Eivissa !!! :p

Última edición por Enea; 08/11/2004 a las 15:47
  #2 (permalink)  
Antiguo 08/11/2004, 16:07
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 Enea.

Debes pensar cuando trabajes en JavaScript, que los objetos a los que haces referencia son los de la página que esta cargada. Por ejemplo, en tu página de muebles, top.contenidos se refiere al frame vecino (que efectivamente se debe llamar "contenidos".

Cuando enlazas de una página a otra con un link, no puedes usar nombres internos de la página que vas a cargar, ya que el navegador no conoce la estructura de frames de la página que esta por venir. Si le dices algo como top.contenidos, el va a buscar el "top" o contenedor de los frames y luego va a buscar al frame llamado "contenidos". Y no lo va a encontrar.

Por otro lado tienes:

<a href=javascript:;onClick...>

lo cual es un error, debería ser:

<a href='javascript:comando;comando;comando'>

o

<a onclick='javascript:comando;comando;comando'>

Donde cada "comando" es una instrucción JS válida.

Saludos.
  #3 (permalink)  
Antiguo 08/11/2004, 16:13
 
Fecha de Ingreso: junio-2003
Mensajes: 744
Antigüedad: 20 años, 10 meses
Puntos: 0
Que tengo que hacer entonces? Estoy muy perdida !
__________________
Ibisof | Saludos desde Eivissa !!! :p
  #4 (permalink)  
Antiguo 08/11/2004, 16:26
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
Se me ocurre algo de emergencia:

- Pon en tu página nueva dos campos hidden, algo asi como frame1 y frame2 para que cuando presiones el link, llenes esos hiddens con las dos direcciones que necesitas en tu pagina de muebles.

- Pon en tu página de muebles un if que te indique si esa página se esta cargando o no a partir de la nueva. De ser asi, la página deberá leer tus hiddens y cargar los frames según lo que diga en ellos.

Te armo un modelito para ayudarte, ya voy....
  #5 (permalink)  
Antiguo 08/11/2004, 16:31
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
Tu página de muebles:

Código PHP:
<html>
 <
head>
  <
script language='javascript'>

   function 
directo(){
    
top.menu.location.href opener.document.frm.frame1.value;
    
top.contenidos.location.href opener.document.frm.frame2.value;
   }

   if (
opener.location.href == "www.mipagina.htm")
    
directo();

  
</script>
 </head>
 <body>
  .
  .
  .
 </body>
</html> 
Tu página nueva:

Código PHP:
<html>
 <
head>
  <
script language='javascript'>

   function 
abreMuebles(){
    
document.frm.frame1.value "menu2.htm";
    
document.frm.frame2.value "contenido4.htm";
    
open("www.muebles.com");
   }

   if (
opener.location.href == "www.mipagina.htm")
    
directo();

  
</script>
 </head>
 <body>
  <form name='frm'>
   <a href='javascript:abreMuebles()'>Muebles</a>
   <input type='hidden' name='frame1'>
   <input type='hidden' name='frame2'>
  </form>
  .
  .
  .
 </body>
</html> 
Suerte!
  #6 (permalink)  
Antiguo 08/11/2004, 16:33
 
Fecha de Ingreso: junio-2003
Mensajes: 744
Antigüedad: 20 años, 10 meses
Puntos: 0
Voy a probar a ver q tal, muchas gracias
__________________
Ibisof | Saludos desde Eivissa !!! :p
  #7 (permalink)  
Antiguo 08/11/2004, 16:59
 
Fecha de Ingreso: junio-2003
Mensajes: 744
Antigüedad: 20 años, 10 meses
Puntos: 0
Antes de nada muchas gracias por la ayuda,parece que si funciona.
Para salir del paso puede estar bien, pero me interesaría mucho saber si hay alguna otra manera, con un único script... En la pagina que creas nueva, no modificando la pagina que tienes terminada.

Hasta pronto,

Muchas gracias
__________________
Ibisof | Saludos desde Eivissa !!! :p
  #8 (permalink)  
Antiguo 09/11/2004, 07:52
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 de nuevo Enea.

Yo creo que la clave de todo esta en la página de frames, la cual debe estar preparada para ser llamada en un estado determinado.

Yo en tu caso usaría un parámetro el cual al ser vacío, me indicaría que la gente esta entrando directo al sitio y por lo tanto lo llevaría a la página principal, pero si el parámetro fuese 8 (por ejemplo) lo llevaría directo al producto 8.

Para facilitar eso (y dado que tienes dos frames) haría que cualquier cambio en el frame menú recargara el frame de contenidos y asi tendría una rutina con un case que se ejecutara a la entrada:

- Si no hay parámetros, no hagas nada.
- Si hay parámetro, recarga el frame menú.

Como ves, estas pidiendo como hacerlo bien sin tocar tu página de muebles y yo te contesto como "destrozar" la página de muebles...

...pero no puedo dejar de decirte mi opinión...

Saludos.
  #9 (permalink)  
Antiguo 09/11/2004, 13:20
 
Fecha de Ingreso: junio-2003
Mensajes: 744
Antigüedad: 20 años, 10 meses
Puntos: 0
jeje... gracias, muchas gracias.

Vamos a dejarlo así de momento y ya cuando tenga más tiempo investigaré a ver si a base de funciones puede ser la cosa... ya vorem!

Nos vemos, graciasss
__________________
Ibisof | Saludos desde Eivissa !!! :p
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 09:07.