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) } ]



Reply With Quote


Bookmarks