Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    Imperfezione menu a tendina.

    Salve,
    Sto testando un sito fatto da me che monta un menu in dhtml (non farina del mio sacco),questo menu funziona correttamente con IE e Opera ma ha un problema al onMouseOut su firefox...
    In pratica mentre con gli altri browser menzionati il menu viene chiuso spostando il mouse all'esterno, con firefox questo avviene solamente spostando il mouse fuori dall'elemento che ha generato l'evento (quindi solo facendo un innaturale movimento verso l'alto).

    Purtroppo io non ho mai imparato javascript e mi trovo molto in difficoltà....
    Il sito è questo http://www.himeko.info/work/02/index.php il menu in questione è composto dai pulsanti blu orizzontali.

    In più c'è un secondo menu a tendina, ottenuto modificando uno script trovato online: il menu delle foto nella home (che in alcune pagine tipo questa: http://www.himeko.info/work/02/vedi_news.php è reso senza javascript e in una forma diversa).

    Funziona correttamente da quello che ho visto, mi chiedevo se aveste qualche consiglio per migliorarlo conservando l'effetto cross-browser.

    Vi ringrazio in anticipo


  2. #2
    Non c'è nessuno che può aiutarmi? :master:

  3. #3
    ho visitato il sito, utilizzo firefox e il problema che dici tu non si è verificato.
    puoi spiegarti meglio?
    magari posta lo script del menù, in modo da capirci di più.
    <head> Nothing! </head>
    <body> Open your mind and close your ass !!! </body>

  4. #4
    codice:
    Nell' head:
    <script type="text/javascript" src="include/chrome.js">
    
    /***********************************************
    * Chrome CSS Drop Down Menu- © Dynamic Drive DHTML code library (www.dynamicdrive.com)
    * This notice MUST stay intact for legal use
    * Visit Dynamic Drive at http://www.dynamicdrive.com/ for full source code
    ***********************************************/
    
    </script>
    codice:
    Il file incluso:
    //Chrome Drop Down Menu- Author: Dynamic Drive (http://www.dynamicdrive.com)
    //Last updated: June 14th, 06'
    
    var cssdropdown={
    disappeardelay: 250, //set delay in miliseconds before menu disappears onmouseout
    disablemenuclick: true, //when user clicks on a menu item with a drop down menu, disable menu item's link?
    enableswipe: 1, //enable swipe effect? 1 for yes, 0 for no
    
    //No need to edit beyond here////////////////////////
    dropmenuobj: null, ie: document.all, firefox: document.getElementById&&!document.all, swipetimer: undefined, bottomclip:0,
    
    getposOffset:function(what, offsettype){
    var totaloffset=(offsettype=="left")? what.offsetLeft : what.offsetTop;
    var parentEl=what.offsetParent;
    while (parentEl!=null){
    totaloffset=(offsettype=="left")? totaloffset+parentEl.offsetLeft : totaloffset+parentEl.offsetTop;
    parentEl=parentEl.offsetParent;
    }
    return totaloffset;
    },
    
    swipeeffect:function(){
    if (this.bottomclip<parseInt(this.dropmenuobj.offsetHeight)){
    this.bottomclip+=10+(this.bottomclip/10) //unclip drop down menu visibility gradually
    this.dropmenuobj.style.clip="rect(0 auto "+this.bottomclip+"px 0)"
    }
    else
    return
    this.swipetimer=setTimeout("cssdropdown.swipeeffect()", 10)
    },
    
    showhide:function(obj, e){
    if (this.ie || this.firefox)
    this.dropmenuobj.style.left=this.dropmenuobj.style.top="-500px"
    if (e.type=="click" && obj.visibility==hidden || e.type=="mouseover"){
    if (this.enableswipe==1){
    if (typeof this.swipetimer!="undefined")
    clearTimeout(this.swipetimer)
    obj.clip="rect(0 auto 0 0)" //hide menu via clipping
    this.bottomclip=0
    this.swipeeffect()
    }
    obj.visibility="visible"
    }
    else if (e.type=="click")
    obj.visibility="hidden"
    },
    
    iecompattest:function(){
    return (document.compatMode && document.compatMode!="BackCompat")? document.documentElement : document.body
    },
    
    clearbrowseredge:function(obj, whichedge){
    var edgeoffset=0
    if (whichedge=="rightedge"){
    var windowedge=this.ie && !window.opera? this.iecompattest().scrollLeft+this.iecompattest().clientWidth-15 : window.pageXOffset+window.innerWidth-15
    this.dropmenuobj.contentmeasure=this.dropmenuobj.offsetWidth
    if (windowedge-this.dropmenuobj.x < this.dropmenuobj.contentmeasure)  //move menu to the left?
    edgeoffset=this.dropmenuobj.contentmeasure-obj.offsetWidth
    }
    else{
    var topedge=this.ie && !window.opera? this.iecompattest().scrollTop : window.pageYOffset
    var windowedge=this.ie && !window.opera? this.iecompattest().scrollTop+this.iecompattest().clientHeight-15 : window.pageYOffset+window.innerHeight-18
    this.dropmenuobj.contentmeasure=this.dropmenuobj.offsetHeight
    if (windowedge-this.dropmenuobj.y < this.dropmenuobj.contentmeasure){ //move up?
    edgeoffset=this.dropmenuobj.contentmeasure+obj.offsetHeight
    if ((this.dropmenuobj.y-topedge)<this.dropmenuobj.contentmeasure) //up no good either?
    edgeoffset=this.dropmenuobj.y+obj.offsetHeight-topedge
    }
    }
    return edgeoffset
    },
    
    dropit:function(obj, e, dropmenuID){
    if (this.dropmenuobj!=null) //hide previous menu
    this.dropmenuobj.style.visibility="hidden" //hide menu
    this.clearhidemenu()
    if (this.ie||this.firefox){
    obj.onmouseout=function(){cssdropdown.delayhidemenu()}
    obj.onclick=function(){return !cssdropdown.disablemenuclick} //disable main menu item link onclick?
    this.dropmenuobj=document.getElementById(dropmenuID)
    this.dropmenuobj.onmouseover=function(){cssdropdown.clearhidemenu()}
    this.dropmenuobj.onmouseout=function(){cssdropdown.dynamichide(e)}
    this.dropmenuobj.onclick=function(){cssdropdown.delayhidemenu()}
    this.showhide(this.dropmenuobj.style, e)
    this.dropmenuobj.x=this.getposOffset(obj, "left")
    this.dropmenuobj.y=this.getposOffset(obj, "top")
    this.dropmenuobj.style.left=this.dropmenuobj.x-this.clearbrowseredge(obj, "rightedge")+"px"
    this.dropmenuobj.style.top=this.dropmenuobj.y-this.clearbrowseredge(obj, "bottomedge")+obj.offsetHeight+1+"px"
    }
    },
    
    contains_firefox:function(a, b) {
    while (b.parentNode)
    if ((b = b.parentNode) == a)
    return true;
    return false;
    },
    
    dynamichide:function(e){
    var evtobj=window.event? window.event : e
    if (this.ie&&!this.dropmenuobj.contains(evtobj.toElement))
    this.delayhidemenu()
    else if (this.firefox&&e.currentTarget!= evtobj.relatedTarget&& !this.contains_firefox(evtobj.currentTarget, evtobj.relatedTarget))
    this.delayhidemenu()
    },
    
    delayhidemenu:function(){
    this.delayhide=setTimeout("cssdropdown.dropmenuobj.style.visibility='hidden'",this.disappeardelay) //hide menu
    },
    
    clearhidemenu:function(){
    if (this.delayhide!="undefined")
    clearTimeout(this.delayhide)
    },
    
    startchrome:function(){
    for (var ids=0; ids<arguments.length; ids++){
    var menuitems=document.getElementById(arguments[ids]).getElementsByTagName("a")
    for (var i=0; i<menuitems.length; i++){
    if (menuitems[i].getAttribute("rel")){
    var relvalue=menuitems[i].getAttribute("rel")
    menuitems[i].onmouseover=function(e){
    var event=typeof e!="undefined"? e : window.event
    cssdropdown.dropit(this,event,this.getAttribute("rel"))
    }
    }
    }
    }
    }
    
    }
    codice:
    Nel body:
    	<div class="menu" id="menu">
    			<ul>
    			<li class="color_1">Contenuti <li class="color_2">Due - prova<li class="color_3">Utenti<li class="color_4">Quattro<li class="color_5">Contatti			[/list]
    	</div>
    	<div id="dropmenu1" class="dropmenudiv">NewsArticoli</div><div id="dropmenu3" class="dropmenudiv">Area PrivataRegistratiLog In / Log OutRecupera Password</div><div id="dropmenu4" class="dropmenudiv">prova1</div><div id="dropmenu5" class="dropmenudiv">ContattaciNewsletter</div><script type="text/javascript">
    
    cssdropdown.startchrome("menu")
    </script>
    Spero di non aver dimenticato nulla.

  5. #5
    beh, certo che con il codice che hai postato non funziona niente, comunque se vai sul sito: www.dinamicdrive.com, il menù che stai utilizzando è compatibile con: FF1+ IE5+ Opr7+, anche se hanno scritto FF1+, nella versione 1xx funziona correttamente, mentre nella 2xx da il problema che dici tu.
    cercherò di darci un occhiata, anche se non mi pare che sia una cosa veloce.
    Ciauz!
    <head> Nothing! </head>
    <body> Open your mind and close your ass !!! </body>

  6. #6
    Grazie sono riuscita, adesso funziona bene, pare che avessi fatto casino nel cambiare i nomi di alcuni oggetti.

    Per il foto menu verticale delle pagine interne vorrei mettere i sottolink che appaiono al click spostando gli elementi verso il basso. che script mi consigliate?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.