Results 1 to 3 of 3

Thread: AnyLink Vertical Menu problems firefox chrome

  1. #1
    Join Date
    Nov 2008
    Posts
    2
    Thanks
    1
    Thanked 0 Times in 0 Posts

    Default AnyLink Vertical Menu problems firefox chrome

    1) Script Title: AnyLink Vertical Menu

    2) Script URL (on DD): http://www.dynamicdrive.com/dynamici...nkvertical.htm

    3) Describe problem:
    visit problem at: http://www.deapa.com/pphc/

    it works fine in ie. In firefox and chrome it does not seem to work properly. When I move down the menu the flyout stays in the same position. I think the problem is in the getoffsetpost function. In tests it always returns the same value in the problem browsers.

    the javascript is here [
    Code:
    /***********************************************
    * AnyLink Vertical Menu- © Dynamic Drive (www.dynamicdrive.com)
    * This notice MUST stay intact for legal use
    * Visit http://www.dynamicdrive.com/ for full source code
    ***********************************************/
    
    //Contents for menu 1
    var menu1=new Array()
    menu1[0]='<a href="#">PW Sub-Menu 1</a>'
    menu1[1]='<a href="#">PW Sub-Menu 2</a>'
    menu1[2]='<a href="#">PW Sub-Menu 3</a>'
    
    
    //Contents for menu 2, and so on
    var menu2=new Array()
    menu2[0]='<a href="#">Ed Sub-Menu 1</a>'
    menu2[1]='<a href="#">Ed Sub-Menu 2</a>'
    menu2[2]='<a href="#">Ed Sub-Menu 3</a>'
    
    //Contents for menu 3, and so on
    var menu3=new Array()
    menu3[0]='<a href="#">NC Sub-Menu 1</a>'
    menu3[1]='<a href="#">NC Sub-Menu 2</a>'
    menu3[2]='<a href="#">NC Sub-Menu 3</a>'
    
    //Contents for menu 4, and so on
    var menu4=new Array()
    menu4[0]='<a href="#">Cont Sub-Menu 1</a>'
    menu4[1]='<a href="#">Cont Sub-Menu 2</a>'
    menu4[2]='<a href="#">Cont Sub-Menu 3</a>'
    
    //Contents for menu 5, and so on
    var menu5=new Array()
    menu5[0]='<a href="#">Grant Sub-Menu 1</a>'
    menu5[1]='<a href="#">Grant Sub-Menu 2</a>'
    menu5[2]='<a href="#">Grant Sub-Menu 3</a>'
    
    //Contents for menu 6, and so on
    var menu6=new Array()
    menu6[0]='<a href="#">Memb Sub-Menu 1</a>'
    menu6[1]='<a href="#">Memb Sub-Menu 2</a>'
    menu6[2]='<a href="#">Memb Sub-Menu 3</a>'
    
    //Contents for menu 7, and so on
    var menu7=new Array()
    menu7[0]='<a href="#">MHI Sub-Menu 1</a>'
    menu7[1]='<a href="#">MHI Sub-Menu 2</a>'
    menu7[2]='<a href="#">MHI Sub-Menu 3</a>'
    
    
    var disappeardelay=150  //menu disappear speed onMouseout (in miliseconds)
    var horizontaloffset=2 //horizontal offset of menu from default location. (0-5 is a good value)
    
    /////No further editting needed
    
    var ie4=document.all;
    var ns6=document.getElementById&&!document.all;
    var mapflag=0
    
    if (ie4||ns6)
    document.write('<div id="dropmenudiv" style="visibility:hidden;width: 160px" onMouseover="clearhidemenu()" onMouseout="dynamichide(event)"></div>');
    
    function getposOffset(what, offsettype){
    if (what.parentNode&&typeof what.parentNode.tagName!=='undefined'&&what.parentNode.tagName.toLowerCase()=='map'){
    mapflag=1;
    var ocoords=what.coords.split(',')
    var totaloffset=(offsettype=="left")? ocoords[0]*1 : ocoords[3]*1;
    var mapIm=what.parentNode.parentNode.getElementsByTagName('img')
    for (var i_tem = 0; i_tem < mapIm.length; i_tem++)
    if (mapIm[i_tem].getAttribute('usemap', 0)&&mapIm[i_tem].getAttribute('usemap', 0).replace(/^.*(#.*)/g,'$1')=='#'+what.parentNode.name)
    var parentEl=mapIm[i_tem];
    }
    else {
    mapflag=0;
    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;
    }
    
    function showhide(obj, e, visible, hidden, menuwidth){
    if (ie4||ns6)
    dropmenuobj.style.left=dropmenuobj.style.top=-500+'px'
    dropmenuobj.widthobj=dropmenuobj.style
    dropmenuobj.widthobj.width=menuwidth
    if (e.type=="click" && obj.visibility==hidden || e.type=="mouseover")
    obj.visibility=visible
    else if (e.type=="click")
    obj.visibility=hidden
    }
    
    function iecompattest(){
    return (document.compatMode && document.compatMode!="BackCompat")? document.documentElement : document.body
    }
    
    function clearbrowseredge(obj, whichedge){
    var edgeoffset=0
    if (whichedge=="rightedge"){
    var windowedge=ie4 && !window.opera? iecompattest().scrollLeft+iecompattest().clientWidth-15 : window.pageXOffset+window.innerWidth-15
    dropmenuobj.contentmeasure=dropmenuobj.offsetWidth
    if (windowedge-dropmenuobj.x-obj.offsetWidth < dropmenuobj.contentmeasure)
    edgeoffset=dropmenuobj.contentmeasure+obj.offsetWidth
    }
    else{
    var topedge=ie4 && !window.opera? iecompattest().scrollTop : window.pageYOffset
    var windowedge=ie4 && !window.opera? iecompattest().scrollTop+iecompattest().clientHeight-15 : window.pageYOffset+window.innerHeight-18
    dropmenuobj.contentmeasure=dropmenuobj.offsetHeight
    if (windowedge-dropmenuobj.y < dropmenuobj.contentmeasure){ //move menu up?
    edgeoffset=dropmenuobj.contentmeasure-obj.offsetHeight
    if ((dropmenuobj.y-topedge)<dropmenuobj.contentmeasure) //up no good either? (position at top of viewable window then)
    edgeoffset=dropmenuobj.y
    }
    }
    return edgeoffset
    }
    
    function populatemenu(what){
    if (ie4||ns6)
    dropmenuobj.innerHTML=what.join("")
    }
    
    
    function dropdownmenu(obj, e, menucontents, menuwidth){
    if (window.event) event.cancelBubble=true
    else if (e.stopPropagation) e.stopPropagation()
    clearhidemenu()
    dropmenuobj=document.getElementById? document.getElementById("dropmenudiv") : dropmenudiv
    populatemenu(menucontents)
    
    if (ie4||ns6){
    showhide(dropmenuobj.style, e, "visible", "hidden", menuwidth)
    dropmenuobj.x=getposOffset(obj,"left")
    dropmenuobj.y=getposOffset(obj,"top")
    dropmenuobj.style.left=180+"px" 
    /*dropmenuobj.style.left=dropmenuobj.x-clearbrowseredge(obj, "rightedge")+obj.offsetWidth+horizontaloffset+"px"*/ 
    dropmenuobj.style.top=dropmenuobj.y-clearbrowseredge(obj, "bottomedge")+"px"
    /*var oHeight=mapflag? 0 : obj.offsetHeight+46
    dropmenuobj.style.top=dropmenuobj.y-clearbrowseredge(obj, "bottomedge")+oHeight+"px"*/
    }
    
    return clickreturnvalue()
    }
    
    function clickreturnvalue(){
    if (ie4||ns6) return false
    else return true
    }
    
    function contains_ns6(a, b) {
    while (b.parentNode)
    if ((b = b.parentNode) == a)
    return true;
    return false;
    }
    
    function dynamichide(e){
    if (ie4&&!dropmenuobj.contains(e.toElement))
    delayhidemenu()
    else if (ns6&&e.currentTarget!= e.relatedTarget&& !contains_ns6(e.currentTarget, e.relatedTarget))
    delayhidemenu()
    }
    
    function hidemenu(e){
    if (typeof dropmenuobj!="undefined"){
    if (ie4||ns6)
    dropmenuobj.style.visibility="hidden"
    }
    }
    
    function delayhidemenu(){
    if (ie4||ns6)
    delayhide=setTimeout("hidemenu()",disappeardelay)
    }
    
    function clearhidemenu(){
    if (typeof delayhide!="undefined")
    clearTimeout(delayhide)
    }
    
    ]
    Last edited by ddadmin; 11-01-2008 at 08:12 AM.

  2. #2
    Join Date
    Aug 2004
    Posts
    10,143
    Thanks
    3
    Thanked 1,008 Times in 993 Posts
    Blog Entries
    16

    Default

    Try moving the onMouseover/ onMouseout event handlers inside your menu items from the LI to the A element:

    Code:
    		<ul class="avmenu">
    			<li><a class="current" href="http://www.deapa.com/pphc/index.php">Home</a></li>
    			<li ><a href="http://www.deapa.com/pphc/program.php" onmouseover="dropdownmenu(this, event, menu1, '165px')" onmouseout="delayhidemenu()">Program Work</a>
    </li>
    etc
    etc
    DD Admin

  3. The Following User Says Thank You to ddadmin For This Useful Post:

    cadillacwd (11-01-2008)

  4. #3
    Join Date
    Nov 2008
    Posts
    2
    Thanks
    1
    Thanked 0 Times in 0 Posts

    Default Thanks

    Wow! yes it worked!

    I thought I had tried that.

    I always use your scripts, I have tried others they never work as advertised. Your scripts always work.

    Thank You

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •