Foros del Web » Creando para Internet » HTML »

Ayuda Urgente

Estas en el tema de Ayuda Urgente en el foro de HTML en Foros del Web. Hola a todos !!! Estoy trabajando con Dreamweaver 4 y tengo un gran problema. Veréis, resulta que tengo una página con frames. En el de ...
  #1 (permalink)  
Antiguo 20/12/2002, 11:51
 
Fecha de Ingreso: noviembre-2002
Mensajes: 223
Antigüedad: 15 años
Puntos: 1
Ayuda Urgente

Hola a todos !!!

Estoy trabajando con Dreamweaver 4 y tengo un gran problema.

Veréis, resulta que tengo una página con frames. En el de arriba tengo un menú con opciones y en el de abajo texto. Cuando el ratón se posiciona sobre las opciones del menú, aparacen en el menú de abajo unas capas que se hacen visibles en ese momento y cuando el ratón se posiciona en cualquier otro punto que no sea el menú, desaparecen.

Las capas, como digo, están situadas en una parte concreta del frame del texto. Como os podréis imaginar, como el texto es amplio, aparece automáticamente una barra de desplazamiento para leerlo entero.

Cuando estoy al principio del texto y me pongo en el menú, perfecto.

El problema es cuando me voy desplazando por el texto, porque
las capas se cortan (no se ve la parte de la capa correspondiente al trozo de ventana que permanece oculto porque me he desplazado con la barra), incluso si me sigo desplazando llega un momento que desaparecen del todo y cuando me posiciono con el ratón en el menú no las veo.

Por favor, necesito vuestra ayuda.

Podéis decirme como arreglar esto para que se vean las capas en el frame de abajo cuando el ratón se posiciona en la opciones del menú del frame primero, independientemente del desplazamiento del texto?? (A lo mejor, podéis indicarme alguna función JavaScript)

Muchas gracias por vuestra ayuda y aprovecho para desearos a todos una estupenda Navidad. Felices Fiestas amigos!!!!
  #2 (permalink)  
Antiguo 20/12/2002, 12:53
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 15 años, 9 meses
Puntos: 771
Hola, Liz26.

Si tienes una capa parecida a esta:

<div id="flecha" style="position:absolute; border:1px solid red"; width:80; height:30>algo</div>

puedes ponerla a la altura de la pantalla que tu quieras con:

flecha.style.top= document.body.scrollTop+10

Espero que te sirva. Saludos,
  #3 (permalink)  
Antiguo 22/12/2002, 10:54
 
Fecha de Ingreso: noviembre-2002
Mensajes: 223
Antigüedad: 15 años
Puntos: 1
Muchas gracias, te lo agradezco un montón. Aún no lo he probado, pero esperaba que existiera alguna función de ese tipo.

En cuanto lo pruebe te comento que tal.

Una única duda... ¿se pone en el body o en otro sitio en concreto?

Mil gracias por tu ayuda

Última edición por Liz26; 22/12/2002 a las 10:57
  #4 (permalink)  
Antiguo 22/12/2002, 14:15
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 15 años, 9 meses
Puntos: 771
Hola de nuevo.

El <div> tienes que ponerlo entre <body> y </body>, como tiene puesto en el estilo "position:absolute" se colocará en la parte de la pantalla que tu quieras. Te dejo un ejemplo más completo para que controles la posición:
Código PHP:
<div id="flecha" style="position:absolute; border:1px solid red; width:80; height:30; left:50; top:40"
Por cierto, en el anterior ejemplo había unas comillas que no estaban donde deberían.

Supongo que tendrás algo asi como onMouseOver="nombreFuncion()" Pues en esa función es donde incluyes el código que te puse:
Código PHP:
function nombreFuncion {
...
flecha.style.topdocument.body.scrollTop+10;
...

Se me olvidó mencionar (aunque puede que lo hayas adivinado) que el +10 significa que saldrá la capa a 20 pixels de la parte superior.

No dudes en preguntar las veces que necesites. Para eso están los Foros. Saludos,
  #5 (permalink)  
Antiguo 22/12/2002, 15:00
 
Fecha de Ingreso: noviembre-2002
Mensajes: 223
Antigüedad: 15 años
Puntos: 1
El problema es que yo no tengo ninguna función definida, porque se inserta automáticamente con el Dreamweaver,

El código es:

<td onMouseOver="MM_showHideLayers('Capa?Frame','','sh ow')" onMouseOut="MM_showHideLayers('Capa?Frame','','hid e')" >


Por eso, no se donde tengo que incluir el código que tú me has dicho:

flecha.style.top= document.body.scrollTop+10;

  #6 (permalink)  
Antiguo 22/12/2002, 15:16
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 16 años, 3 meses
Puntos: 380
Lizz, busca la capa en donde tienes el sub-menú.
JavierB en su ejemplo llama a la capa "flecha". La capa que muestras u ocultas tendrá otro nombre. Substituye "flecha" por el nombre de tu capa y luego, esa línea...

tuCapa.style.top= document.body.scrollTop+10;


La pegas al final de la function MM_showHideLayers() que te habrá insertado DreamWeaver en algún lugar de <head>

Eso hará que cada vez que sea llamada la función que muestra u oculta capas se encargue de que la posición de esa capa sea a 10 pixels de la parte superior de la ventana del navegador
  #7 (permalink)  
Antiguo 22/12/2002, 15:25
 
Fecha de Ingreso: noviembre-2002
Mensajes: 223
Antigüedad: 15 años
Puntos: 1
Mil gracias.

Mañana a primerísima hora lo estoy probando, y ya te contaré.

Ahora no tengo aquí el código, pero no recuerdo haber visto en el código fuente el desarrollo de la función MM_showHideLayers. De todas maneras, no quiero aventurarme porque lo lógico es que esa función esté desarrollada, así que prefiero comprobarlo mañana. Seguro que como tú dices, está ahí.

Mañana te cuento y gracias de nuevo por toda la ayuda
  #8 (permalink)  
Antiguo 23/12/2002, 02:10
 
Fecha de Ingreso: noviembre-2002
Mensajes: 223
Antigüedad: 15 años
Puntos: 1
Hola, buenos días.

Acabo de probar lo que me dijísteis ayer y no me funciona.

Vereís en el frame donde tengo el menú, tengo la siguiente función:


function MM_showHideLayers() { //v3.0
var i,p,v,obj,args=MM_showHideLayers.arguments;
for (i=0; i<(args.length-2); i+=3) if ((obj=MM_findObj(args[i]))!=null) { v=args[i+2];
if (obj.style) { obj=obj.style; v=(v=='show')?'visible':(v='hide')?'hidden':v; }
obj.visibility=v; }
Historia.style.top= document.body.scrollTop+72;
}


y la llamada es:

<td nowrap height="18" onMouseOver="entra(this,'A8DEFF');MM_showHideLayer s('Historia?General','','show')" onMouseOut="sale(this,'ffffff');MM_showHideLayers( 'Historia?General','','hide')" align="right" class="FondoMenusGenerales" >
<div align="center"><a href="Historia.htm" class="OpcionMenuResaltada" target="_parent">Historia</a></div></td>

y en el frame donde está la capa, ésta se define de la siguiente forma:

<div id=Historia style="Z-INDEX: 1; LEFT: 115px; VISIBILITY: hidden; WIDTH: 200; POSITION: absolute; TOP: 72px; HEIGHT: 130" class="Cuadro2">
<table cellspacing=0 cellpadding=2 width=200 height="130" class="FondoCapaOpciones">
<tr>
<td height="117">
<div align="center"><font class="Explicacion"><font class="Boliche">w</font> Texto 1<br>
<span class="Boliche">w</span> Texto 2<br>
<span class="Boliche">w</span> Texto3</font></div>
</td>
</tr>
</table>
</div>

El error que me da en la página del frame del menú es que no está definido Historia. Si pongo Historial?General (General es el nombre del frame del texto) me dice que espera un objeto.

Ayssss, qué puedo hacer ???
  #9 (permalink)  
Antiguo 23/12/2002, 02:46
 
Fecha de Ingreso: noviembre-2002
Mensajes: 223
Antigüedad: 15 años
Puntos: 1
También he probado con esto, que me parece que tiene muchísmo más sentido.

function MM_showHideLayers() { //v3.0
var i,p,v,obj,args=MM_showHideLayers.arguments;
for (i=0; i<(args.length-2); i+=3) if ((obj=MM_findObj(args[i]))!=null) { v=args[i+2];
if (obj.style) { obj=obj.style; v=(v=='show')?'visible':(v='hide')?'hidden':v; }
obj.visibility=v; obj.top=document.body.scrollTop + 72; }
}

No me da ningún error, pero no me funciona, al desplazar el texto la capa se sigue cortando



  #10 (permalink)  
Antiguo 23/12/2002, 06:19
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 16 años, 3 meses
Puntos: 380
Liz, no había caído en un detalle, la función está en un frame y la capa en otro, por eso te dice la función que historia no está definido, porque pertenece a otro marco.

Prueba a pedirle....

parent.nombredelmarco.getElementById('Historia').s tyle.top= document.body.scrollTop+72

A ver si le gusta así

saludos
  #11 (permalink)  
Antiguo 23/12/2002, 06:28
 
Fecha de Ingreso: noviembre-2002
Mensajes: 223
Antigüedad: 15 años
Puntos: 1
Nada, no hay manera. He puesto:

function MM_showHideLayers() { //v3.0
var i,p,v,obj,args=MM_showHideLayers.arguments;
for (i=0; i<(args.length-2); i+=3) if ((obj=MM_findObj(args[i]))!=null) { v=args[i+2];
if (obj.style) { obj=obj.style; v=(v=='show')?'visible':(v='hide')?'hidden':v; }
obj.visibility=v;}
parent.General.getElementByld('Historia').style.to p= document.body.scrollTop+72;
}

Sale el error "El objeto no acepta esta propiedad o método"

Aysssss, ¿qué puedo hacer?
  #12 (permalink)  
Antiguo 23/12/2002, 06:31
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 16 años, 3 meses
Puntos: 380
Me cachis....

bueno voy a motar un chiringuito de frames lo pruebo y te digo cómo darle solución :o)

Yá te digo algo
  #13 (permalink)  
Antiguo 23/12/2002, 06:37
 
Fecha de Ingreso: noviembre-2002
Mensajes: 223
Antigüedad: 15 años
Puntos: 1
Te agradezo muchísimo todo esto. Gracias, de verdad.
  #14 (permalink)  
Antiguo 23/12/2002, 07:08
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 16 años, 3 meses
Puntos: 380
Bueno yá está, era una bobada. Omití document

Además hay que poner la ruta a la posición, en fin, que la línea queda como sigue;


parent.mainFrame.document.getElementById('Historia').style.top = parent.mainFrame.document.body.scrollTop

cambia mainFrame por el nombre del frame donde se encuentra la capa Historia.

dinos si te funcionó
  #15 (permalink)  
Antiguo 23/12/2002, 15:21
 
Fecha de Ingreso: noviembre-2002
Mensajes: 223
Antigüedad: 15 años
Puntos: 1
SIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII !!!!!! ME FUNCIONOOOOOOOOO!!!!!



Muchas gracias Tunait, de verdad. Uffff!!!!!, menudo peso me he quitado de encima, ya creía que tenía que repetir todo el sitio web.

Me habéis ayudado un montón. Mil gracias por todo, sobre todo por enseñarme y compatir vuestros conocimientos. Me habéis sacado de un buen apuro

Os deseo a todos que paséis unas estupendas Navidades en compañía de todos vuestros seres queridos.

FELIZ NAVIDAD Y GRAAAAACIAAASSSS
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 23:43.