mmenu.js
来自「asp构建网站bbs.采用B/S架构」· JavaScript 代码 · 共 511 行 · 第 1/2 页
JS
511 行
/*
DHTML Menu version 3.3.19
Written by Andy Woolley
Copyright 2002 (c) Milonic Solutions. All Rights Reserved.
Vist http://www.milonic.co.uk/menu or Email menu3@milonic.com
You may use this menu on your web site free of charge as long as you inform us of your intentions with your URL AND
You place a link to http://www.milonic.co.uk/menu AND ALL copyright notices remain in place in all files including your home page
Comercial licenses and support contracts are available on request.
This script featured on Dynamic Drive (http://www.dynamicdrive.com)
*/
Mtimer=setTimeout("sis()",9999);_d=document;smc=-1;MLoaded=0;
ns4=(_d.layers)?true:false
ns6=(navigator.userAgent.indexOf("Gecko")!=-1)?true:false
mac=(navigator.appVersion.indexOf("Mac")!=-1)?true:false
mac45=(navigator.appVersion.indexOf("MSIE 4.5")!=-1)?true:false
if(ns6||ns4)mac=false
opera=(navigator.userAgent.indexOf("Opera")!=-1)?true:false
ns61=(parseInt(navigator.productSub)>=20010726)?true:false
ie4=(!_d.getElementById&&_d.all)?true:false;
konq=(navigator.userAgent.indexOf("Konqueror")!=-1)?true:false
mp=(ns6)?"pointer":"hand";oatop=0;aleft=0;oaleft=1;osy=0;oww=-1;owh=-1;frs=0;fre=0;nsmatch=0;
var a,am,oa,im,om,flta;hlarr=new Array();hlcnt=0;hll=0;Mname=new Array();parr=new Array();
gmi=20;ns6hif=0;timo=0;el=0;nshl=0;var omv=0;df=1;im=0;ofrac=0;omnu=0;ac=22;m=1;sy=1;ShM=0;ww=0;wh=0;var imar=new Array();mr=",";
while(eval("window.menu"+m)){mr+="menu"+m+",";tmenu=eval("menu"+m);Mname[m]=tmenu[0].toLowerCase();m++}
mr=mr+" ";mr=mr.split("\,");menus=mr.length-1;bgt="";if(!opera)bgt="Color";var cgm=0;
function gmobj(mtxt){if(_d.getElementById){m=_d.getElementById(mtxt)}else if(_d.all){m=_d.all[mtxt]}else if(_d.layers){m=_d.layers[mtxt]}return m;}
function gmstyle(mtxt){m=gmobj(mtxt);if(!ns4){if(m)m=m.style;}return m;}
function spos(gm,t_,l_,h_,w_){px="px";if(ns4){px="";gms=gm;if(w_!=null)gms.clip.width=w_;if(h_!=null)gms.clip.height=h_;}else if(opera){px="";gms=gm.style;if(w_!=null)gms.pixelWidth=w_;if(h_!=null)gms.pixelHeight=h_}else{gms=gm.style;if(w_!=null)gms.width=w_+px;if(h_!=null)gms.height=h_+px;}if(t_!=null)gms.top=t_+px;if(l_!=null)gms.left=l_+px}
function gpos(gm){if(ns4){t_=gm.top;l_=gm.left;h_=gm.clip.height;w_=gm.clip.width;}else if(opera){t_=gm.style.pixelTop;l_=gm.style.pixelLeft;h_=gm.style.pixelHeight;w_=gm.style.pixelWidth;}else if(ns6){t_=gm.offsetTop;l_=gm.offsetLeft;h_=gm.offsetHeight;w_=gm.offsetWidth}else{if(mac){topM=gm.offsetParent.topMargin;if(!topM)topM=0;leftM=gm.offsetParent.leftMargin;if(!leftM)leftM=0;t_=parseInt(topM)+gm.offsetTop;l_=parseInt(leftM)+gm.offsetLeft;}else{t_=gm.offsetTop;l_=gm.offsetLeft;}h_=gm.offsetHeight;w_=gm.offsetWidth;}if(konq){w_=parseInt(gm.style.width);h_=parseInt(gm.style.height);}var gpa=new Array();gpa[0]=t_;gpa[1]=l_;gpa[2]=h_;gpa[3]=w_;return(gpa)}
function getMouseXY(e){if(ns4||ns6){MouseX=e.pageX;MouseY=e.pageY;}else{MouseX=event.clientX;MouseY=event.clientY}if(!opera&&_d.all){MouseX=MouseX+_d.body.scrollLeft;MouseY=MouseY+_d.body.scrollTop;if(_d.compatMode=="CSS1Compat")MouseY=MouseY+sy}return true}
function parseLink(txt,what){txt=txt+";";lt="";if(what=="link"){if(txt.indexOf(""")>0){lt=txt}else{sp=txt.indexOf(" ");lt=txt.substr(0,sp);}}else{sp=txt.indexOf(what)+what.length+1;if(sp>what.length+1){lt=txt.substr(sp,999);lt=lt.substr(0,lt.indexOf(";"))}}return lt}
function cHexColor(_c){if(_c.length==6){_c=_c.toUpperCase();x=0;while(x<6){hsh="#";if(_c.charCodeAt(x)>70){hsh="";x=6}x++}_c=hsh+_c}return _c}
function stch(ms){window.status=ms;return true}
function SDiv(nm,sh){if(ns4&&nm.indexOf(".")>0)tD=eval(nm); else tD=gmstyle(nm);if(tD)if(sh)tD.visibility="visible";else tD.visibility="hidden"}
function close_el(){for(xa=hlarr.length-1;xa>=0;xa--){ti=hlarr[xa].split("_");tmenu=eval(ti[0]);if(ns4){shl(ti[0],ti[1],'hide');}else{arg=gmobj("el"+ti[1]);arg.style.backgroundColor=ti[2];if(opera)arg.style.background=ti[2];arg.style.color=""+ti[3];}if(ti[0]==hll){if(ns4)shl(ti[0],hel,'show');return}}hlcnt=0;hlarr=new Array()}
function closeallmenus(){ShM=0;om="";hll="";close_el();if(ns4){omv.visibility="hide"}for(a=1;a<menus;a++){menu=eval("menu"+a);if(menu[17]&&MLoaded){SDiv(menu[17],1)}if (menu[7]!=1){SDiv("menu"+a,0)}else{am=""}}}
function rep_img(){if(timo){timo.src=o_img};}
function popdn(){arg=popdn.arguments;if(arg[0]){if(arg[3].substr(0,5)!="show-"){if(ns4){shl(arg[2],arg[1],"hide")}else{arg[0].style.backgroundColor=arg[4];if(opera)arg[0].style.background=arg[4];arg[0].style.color=arg[5]}}else{if(ns4)omv=0;hlarr[hlcnt]=arg[2]+"_"+arg[1]+"_"+arg[4]+"_"+arg[5];hlcnt++;}menu=eval(arg[2]);if(!menu[12]){Mtimer=setTimeout("closeallmenus()",timegap);}}else{Mtimer=setTimeout("closeallmenus()",timegap);}}
function dc(){if(nshl.indexOf("show-menu=")>-1)return;tr=ltarg.split("=");if(tr[1])parent.frames[tr[1]].location.href=nshl;else location.href=nshl;}
function getMenuByName(mn){mn=mn.toLowerCase();for(a=1;a<menus;a++){if(mn==Mname[a])mn=a}return mn;}
function getMenuItem(mn,item){for(a=1;a<mn;a++){menu=eval("menu"+a);item=item+((menu.length-ac)/5)}item--;return item}
function sis(){for(a=1;a<imar.length;a++){tim=imar[a].split("_");if(tim[4]){tim[3]=tim[3]+"_"+tim[4]}menu=eval(window.tim[3]);if(ns4){im=_d.layers[tim[3]].document.layers.eval("el"+tim[2]);imp=gpos(im);eln="";for(x=0;x<2;x++){imo=_d.layers[tim[3]].document.layers.eval(eln+"el"+tim[2]).document.layers[imar[a]];imop=gpos(imo);imL=imp[3]-(imop[3]);imT=(imp[2]/2)-(imop[2]/2);if(menu[13]=="left")imL=1;if(menu[13]=="center")imL=(imp[3]/2);eln="m";spos(imo,imT,imL,null,null);}}else{imo=gmobj(imar[a]);imop=gpos(imo);im=gmobj("el"+tim[2]);imp=gpos(im);if(menu[11]){imco=gpos(gmobj("hel"+tim[2]));imc=imco[1];}else {imc=0}imT=imp[0]+(imp[2]/2)-(imop[2]/2);imL=imc+imp[3]-(imop[3]);if(menu[13]=="left")imL=imc;if(menu[13]=="center")imL=imc+(imp[3]/2);if(ns6&&!ns61){nsC=gpos(gmobj(tim[3]));imT=imT-nsC[0];imL=imL-nsC[1]}spos(imo,imT,imL,null,null);}}}
function fixb(mnu){menu=eval(mnu);ic=(menu.length-ac)/5;menu[21][2]=1;m42=menu[4]*2;mn=gmobj(mnu);if(ns4){if(menu[14]>-1){spos(gmobj("menuback"+mnu),null,null,mn.clip.height+(menu[14]*2),null)}if(menu[11]){mn.clip.width=mn.clip.width+menu[4]}return}mp=gpos(mn);el=menu[21][1];if(ns4){ml=_d.layers[mnu].document.layers.eval("el"+(el-1))}else{ml=gmobj("el"+(el-1))}mlp=gpos(ml);tw=null;th=null;if(menu[11]){lf=0;tc=0;for(y=el-ic;y<el;y++){tc++;ty=gmobj("el"+y);typ=gpos(ty);thy=gmobj("hel"+y);thyp=gpos(thy);if(mac&&!menu[3]){thy.style.width=1+"px";ty.style.width=thy.offsetWidth+menu[6][9]+"px";typ[3]=thy.offsetWidth}if(opera){ty.style.top=menu[4];if(lf==0)lf=menu[4];typ[2]=typ[2]+(m42);if(menu[3])spos(ty,null,0,null,typ[3]);}spos(thy,0,lf,typ[2],typ[3]);lfL=0;if(menu[ac-1+(tc*5)]>0)lfL=menu[ac-1+(tc*5)];lf=lf+typ[3]+lfL;}tw=lf-lfL;th=typ[2];if(_d.compatMode=="CSS1Compat"){}else{if(mac){if(!_d.doctype){th=th+(m42);tw=tw+m42}}else if(_d.all&&!opera){tw=tw+(m42);th=th+(m42)}}if(opera)tw=tw+(menu[4])}else{if(ns6)tw=mp[3]-(menu[4]*4);if(opera)tw=mp[3]+(menu[6][9]*2)-(m42);}spos(mn,null,null,th,tw);if(ns6)th=th+m42;if(menu[14]>-1){spos(gmobj("menuback"+mnu),null,null,th+(menu[14]*2),null)}}
function sm(v1){menu=eval(v1);if(opera||ns6||menu[11])if(!menu[7]&&!menu[21][2])fixb(v1);ap=gmobj(v1);if(flta)if(ap.filters[0])ap.filters[0].Apply();gmi++;if(!ns4)aps=ap.style; else aps=ap;aps.zIndex=gmi;aps.visibility='visible';if(flta)if(ap.filters[0])ap.filters[0].Play();if(menu[17])SDiv(menu[17],0)}
function popup(mn,mpos){if(isNaN(mn)){for(a=1;a<menus;a++){if(mn==Mname[a])mn=a}}setpos();omv.visibility='hide';clearTimeout(Mtimer);closeallmenus();mtxt='menu'+mn;mi=gmstyle(mtxt);if(mpos){if(ns4)_d.captureEvents(Event.MOUSEMOVE);_d.onmousemove=getMouseXY;mn=gmobj(mtxt);ttop=MouseY+2;gp=gpos(mn);if((ttop+gp[2])>wh+sy)ttop=wh-gp[2]+sy;spos(mn,ttop,MouseX+2,null,null);}flta=0;if((_d.all&&_d.getElementById)&&!mac){ap=gmobj(mtxt);getflta(ap);}sm(mtxt);am=mn}
function shl(lyr,el,s){clearTimeout(Mtimer);mt=_d.layers[lyr].document.layers.eval("el"+el);omv.visibility="hide";menu=eval(lyr);mt.visibility=s;omv=mt}
function popi(v1,lyr,el)
{
subfound=0;
nv1=v1
for(a=1;a<menus;a++)
{
if(v1.substring(10,99)==Mname[a])
{
v1="show-menu"+a;
subfound=1;
a=999
}
}
sel="smenu="+el+"#";
if(!om)om=lyr;
clearTimeout(Mtimer);
if(ns4){timo=_d.layers[lyr].document.layers.eval("el"+el).document.images[0]}else{timo=gmobj("im"+el)}
o_img="";
if (timo)
{
o_img=timo.src;
ima=o_img.split(".");
enD=ima.length;
if(ima[enD-2].indexOf("_over")==-1)ima[enD-2]=ima[enD-2]+"_over";
nsrc="";
for(eD=0;eD<enD;eD++){nsrc=nsrc+ima[eD]+"."}
nsrc=nsrc.substring(0,nsrc.length-1);
ta=om.split(",");
NI1=new Image();
NI1.src=nsrc;
if(mac45){}else if(_d.all||ns6){if(NI1.complete)timo.src=nsrc}else{if(NI1.width>0)timo.src=nsrc}
}
container=eval(lyr);
if(subfound)
{
v1=v1.substring(5,99);
menu=eval(v1);
omnu=v1;
mi=gmobj(v1);
gp=gpos(gmobj(lyr));
h3="";
if(container[11])h3="h";
if(ns4){tel=gpos(_d.layers[lyr].document.layers.eval("el"+el))}else{tel=gpos(gmobj(h3+"el"+el))}
np=gpos(mi);
if(container[11])
{
if(!container[5])container[5]="";
if(!opera&&_d.all&&!mac)gp[1]=gp[1]+container[4];
if(ns6)
{
if(ns61)
{
gp[1]=gp[1]+container[4];
}
else
{
gp[1]=-1;gp[0]=gp[0]-container[4]
}
}
if(mac)gp[0]=gp[0]-container[4];
if(container[5].indexOf("bottom")>=0)
{
tvar=container[1]
if(!tvar)tvar=0;
gp[0]=gp[0]-np[2]-tel[2]
}
if(tel[1]+gp[1]+np[3]>ww+sx){gp[1]=ww-np[3]-tel[1]+sx;}
mtop=gp[0]+gp[2]-1;
mleft=tel[1]+gp[1];
if(container[15])mleft=mleft-np[3]+tel[3]+(container[4]*2)
m1=menu[1];
if(m1)
{
m1=m1+"";
if(m1.indexOf("offset=")==0)
{
os=m1.substr(7,99);
mtop=(parseInt(os)+mtop);
}
else
{
if(m1)mtop=parseInt(m1);
}
}
m2=menu[2];
if(m2){m2=m2+"";
if(m2.indexOf("offset=")==0)
{
os=menu[2].substr(7,99);
mleft=(parseInt(os)+mleft);
}
else
{
if(m2)mleft=m2;
}
}
spos(mi,mtop,mleft-1,null,null);
}
else
{
if(!ns61&&ns6)tel[0]=tel[0]-gp[0];
nt=tel[0]+gp[0]+suboffset_top;
nl=gp[1]+tel[3]-suboffset_left;
if((gp[1]+gp[3]+np[3])>=ww){nl=gp[1]-np[3]+suboffset_left}
if(nt+np[2]>wh+sy){nt=wh-np[2]+sy;}
if(menu[1]>=0)nt=menu[1]
if(menu[2]>=0)nl=menu[2]
spos(mi,nt,nl,null,null);
}
om+=","+v1;
if(ShM==1)
{
sm(v1);
if(!ns4)mi.style.visibility="visible";
}
}
else
{
frt=v1.indexOf(" ")
if(frt>0&&v1.indexOf("show-menu=")>-1)
{
lt=parseLink(v1, "target");
if(lt)
{
v1=v1.substring(10,frt);
pf=parent[lt];
pf.mn=pf.gmobj("menu"+pf.getMenuByName(v1));
menu=eval(lyr);
gp=gpos(gmobj(lyr));
h3="";
if(container[11])h3="h";
if(ns4){mp=gpos(_d.layers[lyr].document.layers.eval("el"+el))}else{mp=gpos(gmobj(h3+"el"+el))}
if(menu[11])
{
fTop=pf.sy;
fLeft=gp[1]+mp[1]+Frames_Top_Offset;
}
else
{
fTop=pf.sy+gp[0]+mp[0];
fLeft=100
}
pf.spos(pf.mn,fTop,fLeft-100,null,null);
pf.popup(v1);
closeallmenus();
}
}
else if(frt>0)
{
lt=parseLink(v1, "target");
if(lt)
{
v1=v1.substring(10,frt);
close_el(v1)
pf=parent[lt];
if(pf)pf.closeallmenus();
}
}
}
ta=om.split(",")
strt=0;
for(a=0;a<ta.length;a++)
{
if (ta[a]==v1)strt=0;
if (strt)
{
if(ta[a])
{
hll=lyr;
hel=el;
close_el(el);
tmnu=eval(ta[a])
if(tmnu[17]&&!menu[17])SDiv(tmnu[17],1)
SDiv(ta[a],0)
}
ta[a]=""
}
if(ta[a]==lyr)strt=1;
}
mmenu=eval(lyr)
if(mmenu[7]&&lyr!=ta[0])
{
closeallmenus();
if(v1==ta[ta.length-1])
{
if(ns4)shl(lyr,el,'show');
tmnu=eval(v1)
if(tmnu[17])SDiv(tmnu[17],0)
SDiv(v1,1)
}
if(nv1.indexOf("target=")>0)
{
}
else
{
popi(nv1,lyr,el);
return
}
}
om=""
mdisp=0
for(a=0;a<ta.length;a++)
{
if(ta[a]==lyr)frs=a
if(ta[a]==v1)fre=a
if (mdisp||(a>frs&&a<fre))
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?