Foros del Web » Programando para Internet » Javascript »

Problema menu horizontal deslizante

Estas en el tema de Problema menu horizontal deslizante en el foro de Javascript en Foros del Web. Hola a todos, espero qeu me podais ayudar y que me explique lo mejor posible y sin rodeos. Pretendo hacer el siguiente menu: http://www.mundojavascript.com/menues/links_en_caja.shtml (no ...
  #1 (permalink)  
Antiguo 17/01/2008, 14:01
 
Fecha de Ingreso: junio-2007
Mensajes: 5
Antigüedad: 16 años, 11 meses
Puntos: 0
Problema menu horizontal deslizante

Hola a todos, espero qeu me podais ayudar y que me explique lo mejor posible y sin rodeos.

Pretendo hacer el siguiente menu:
http://www.mundojavascript.com/menues/links_en_caja.shtml
(no puedo hacer link por reglas del foro)

Al visualizar el ejemplo tanto en IE como en FF, me funciona correctamente.

Creo un html vacio y lo copio segun me indica el codigo del ejemplo.

Lo visualizo con IE y me funciona correctamente.

Lo visualizo con FF y no me funciona, el error es el siguiente. La caja que se desplega se abre sobre la esquina superior izquierda siempre de donde se incrustaron los enlaces.

Alguien me puede ayudar?????

Inserto el codigo del html total por si os resulta mas comodo

Código:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Documento sin t&iacute;tulo</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<!-- Consigue este JavaScript y otros muchos en MundoJavaScript.com -->	  
<style>
<!--

.menuskin{
position:absolute;
width:165px;
background-color:menu;
border:2px solid black;
font:normal 12px Verdana;
line-height:18px;
z-index:100;
visibility:hidden;
}

.menuskin a{
text-decoration:none;
color:black;
padding-left:10px;
padding-right:10px;
}

#mouseoverstyle{
background-color:highlight;
}

#mouseoverstyle a{
color:white;
}
-->
</style>

<script language="JavaScript1.2">

//Pop-it menu- By Dynamic Drive
//For full source code and more DHTML scripts, visit http://www.dynamicdrive.com
//This credit MUST stay intact for use

var linkset=new Array()
//SPECIFY MENU SETS AND THEIR LINKS. FOLLOW SYNTAX LAID OUT

linkset[0]='<div class="menuitems"><a href="http://www.precios10.com">Ordenadores</a></div>'
linkset[0]+='<div class="menuitems"><a href="http://www.cambiabanners.com">Intercambio de banners</a></div>'
linkset[0]+='<div class="menuitems"><a href="http://www.iaupa.com">Recursos web</a></div>'

linkset[1]='<div class="menuitems"><a href="http://msnbc.com">MSNBC</a></div>'
linkset[1]+='<div class="menuitems"><a href="http://cnn.com">CNN</a></div>'
linkset[1]+='<div class="menuitems"><a href="http://abcnews.com">ABC News</a></div>'
linkset[1]+='<div class="menuitems"><a href="http://www.washingtonpost.com">Washington Post</a></div>'

////No need to edit beyond here

var ie4=document.all&&navigator.userAgent.indexOf("Opera")==-1
var ns6=document.getElementById&&!document.all
var ns4=document.layers

function showmenu(e,which){

if (!document.all&&!document.getElementById&&!document.layers)
return

clearhidemenu()

menuobj=ie4? document.all.popmenu : ns6? document.getElementById("popmenu") : ns4? document.popmenu : ""
menuobj.thestyle=(ie4||ns6)? menuobj.style : menuobj

if (ie4||ns6)
menuobj.innerHTML=which
else{
menuobj.document.write('<layer name=gui bgColor=#E6E6E6 width=165 onmouseover="clearhidemenu()" onmouseout="hidemenu()">'+which+'</layer>')
menuobj.document.close()
}

menuobj.contentwidth=(ie4||ns6)? menuobj.offsetWidth : menuobj.document.gui.document.width
menuobj.contentheight=(ie4||ns6)? menuobj.offsetHeight : menuobj.document.gui.document.height
eventX=ie4? event.clientX : ns6? e.clientX : e.x
eventY=ie4? event.clientY : ns6? e.clientY : e.y

//Find out how close the mouse is to the corner of the window
var rightedge=ie4? document.body.clientWidth-eventX : window.innerWidth-eventX
var bottomedge=ie4? document.body.clientHeight-eventY : window.innerHeight-eventY

//if the horizontal distance isn't enough to accomodate the width of the context menu
if (rightedge<menuobj.contentwidth)
//move the horizontal position of the menu to the left by it's width
menuobj.thestyle.left=ie4? document.body.scrollLeft+eventX-menuobj.contentwidth : ns6? window.pageXOffset+eventX-menuobj.contentwidth : eventX-menuobj.contentwidth
else
//position the horizontal position of the menu where the mouse was clicked
menuobj.thestyle.left=ie4? document.body.scrollLeft+eventX : ns6? window.pageXOffset+eventX : eventX

//same concept with the vertical position
if (bottomedge<menuobj.contentheight)
menuobj.thestyle.top=ie4? document.body.scrollTop+eventY-menuobj.contentheight : ns6? window.pageYOffset+eventY-menuobj.contentheight : eventY-menuobj.contentheight
else
menuobj.thestyle.top=ie4? document.body.scrollTop+event.clientY : ns6? window.pageYOffset+eventY : eventY
menuobj.thestyle.visibility="visible"
return false
}

function contains_ns6(a, b) {
//Determines if 1 element in contained in another- by Brainjar.com
while (b.parentNode)
if ((b = b.parentNode) == a)
return true;
return false;
}

function hidemenu(){
if (window.menuobj)
menuobj.thestyle.visibility=(ie4||ns6)? "hidden" : "hide"
}

function dynamichide(e){
if (ie4&&!menuobj.contains(e.toElement))
hidemenu()
else if (ns6&&e.currentTarget!= e.relatedTarget&& !contains_ns6(e.currentTarget, e.relatedTarget))
hidemenu()
}

function delayhidemenu(){
if (ie4||ns6||ns4)
delayhide=setTimeout("hidemenu()",500)
}

function clearhidemenu(){
if (window.delayhide)
clearTimeout(delayhide)
}

function highlightmenu(e,state){
if (document.all)
source_el=event.srcElement
else if (document.getElementById)
source_el=e.target
if (source_el.className=="menuitems"){
source_el.id=(state=="on")? "mouseoverstyle" : ""
}
else{
while(source_el.id!="popmenu"){
source_el=document.getElementById? source_el.parentNode : source_el.parentElement
if (source_el.className=="menuitems"){
source_el.id=(state=="on")? "mouseoverstyle" : ""
}
}
}
}

if (ie4||ns6)
document.onclick=hidemenu

</script>
</head>

<body onload=songticker()>
<div id="popmenu" class="menuskin" onMouseover="clearhidemenu();highlightmenu(event,'on')" onMouseout="highlightmenu(event,'off');dynamichide(event)">
</div>

<a href="#" onMouseover="showmenu(event,linkset[0])" onMouseout="delayhidemenu()">Enlaces 1</a><br>
<a href="#" onMouseover="showmenu(event,linkset[1])" onMouseout="delayhidemenu()">Enlaces 2</a>
</body>
</html>

Muchas gracias!!!!!!!!
  #2 (permalink)  
Antiguo 17/01/2008, 15:18
Avatar de rol2007  
Fecha de Ingreso: mayo-2007
Ubicación: Santiasco CHILE
Mensajes: 300
Antigüedad: 17 años
Puntos: 4
Re: Problema menu horizontal deslizante

hola lo acabo de probar en ff y funciona bien
aparece = que en el ejemplo


raro...explicate mas
__________________
Saludos
desde Chile
  #3 (permalink)  
Antiguo 18/01/2008, 14:37
 
Fecha de Ingreso: junio-2007
Mensajes: 5
Antigüedad: 16 años, 11 meses
Puntos: 0
Re: Problema menu horizontal deslizante

Copie el codigo y lo volvi a pegar en un html y lo abri con mozilla y me sigue dando el problema. A ver si me explico mejor.

Si yo lo abro con internet explorer el efecto es el siguiente: la esquina superior de la caja se pone en el lugar donde este el raton.

Con ff pasa lo siguiente: la esquina superior izquierda de la caja se situa en la esquina superior izquierda de la pagina, no en el lugar donde este el raton. Si meto el menu dentro de la celda,por ejemplo, a mitad de pagina web, la esquina superior izquierda se situa en la esquina superior izquierda de la celda.

En resumen, con IE la esq. sup. izqda de la caja se abre donde este el raton, mientras que con FF la esq.sup.izqd de la caja se situa en la esq.sup.izqd. del lugar donde este contenido el menu.

Muchas gracias.
  #4 (permalink)  
Antiguo 19/01/2008, 17:56
 
Fecha de Ingreso: junio-2007
Mensajes: 5
Antigüedad: 16 años, 11 meses
Puntos: 0
Re: Problema menu horizontal deslizante

Lo he vuelto a probar y me sigue dando problemas, sin embargo, en el ejemplo aun con firefox me funciona bien. Si alguien me puede ayudar y no ha entendido bien mi pregunta no dude en decirmelo.

De todos modos, no me haria falta que se abriera en el lugar del puntero con que se abriera debajo en una posicion fisica me vale. Alguien sabe como modificar este Javascript o uno sencillo para que haga dicho efecto?.

Gracias de nuevo.
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 22:15.