📄 menu132_com.js
字号:
/******************************************************
* (c) Ger Versluis 2000 version 13.21 *
* You may use this script on non commercial sites. *
* www.burmees.nl/menu *
* *
* Used with permission. 13.21 Mods by Chris Maunder *
*******************************************************/
function HVMenu(config)
{
var cfg = config;
var thisobj = this;
if(document.getElementById){
var AgntUsr=navigator.userAgent.toLowerCase(),AppVer=navigator.appVersion.toLowerCase(),
Opr=AgntUsr.indexOf("opera")!=-1,Opr7=Opr&&parseInt(AgntUsr.substring(AgntUsr.indexOf("opera")+6))>6?true:false;
if((!Opr||Opr7)){
if(AppVer.indexOf("msie 7")!=-1)cfg.OverFormElements=0;
var NavYes=((AgntUsr.indexOf("mozilla")!=-1&&AgntUsr.indexOf("compatible")==-1)||Opr7)?true:false,ExpYes=(AgntUsr.indexOf("msie")!=-1&&!Opr7)? true:false;
if(cfg.MenuUsesFrames&&!parent.frames[0])cfg.MenuUsesFrames=0;
var Exp6Plus=((AppVer.indexOf("msie 6")!=-1||AppVer.indexOf("msie 7")!=-1)&&!Opr7)?true:false,MacExp5=(AppVer.indexOf("mac")!=-1&&AppVer.indexOf("msie 5")!=-1)?true:false,
FLoc,ScLoc,DcLoc,SLdAgnWin,FWinH,FColW,SColW,DColW,SWinW,SWinH,FWinW,RLvl=0,FntFc=1,StaticPos=0,Ztop=100,FrstCreat=true,Ldd=false,
Crtd=false,FCmplnt=false,SCmplnt=false,M_Clckd=false,IniFlg=false,ShwFlg=false,AcrssFrms=true,FrstCntnr=null,CurOvr=null,FHtml=null,ScHtml=null,
CloseTmr=null,OpnTmr=null,RmbrNow=null,FStr="",M_Hide="hidden",M_Show="visible",P_X="px",M_StrtTp=cfg.StartTop,M_StrtLft=cfg.StartLeft,
Par=cfg.MenuUsesFrames?parent:window,Doc=Par.document,Bod=Doc.body,Trigger=NavYes?Par:Bod,
Nav_Op=NavYes&&AgntUsr.indexOf("gecko/")!=-1&&AgntUsr.indexOf("mac")==-1&&parseInt(AgntUsr.substring(AgntUsr.indexOf("gecko/")+6,AgntUsr.indexOf("gecko/")+12))>=200303?true:false,
InitLdd,MstSz=0;this.LdTmr=setInterval(function(){thisobj.ChckInitLd()},100);}}
this.ChckInitLd = function(){
InitLdd=ExpYes?
cfg.MenuUsesFrames?Par.frames[cfg.FirstLineFrame].document.readyState=="complete"&&Par.frames[cfg.SecLineFrame].document.readyState=="complete"?
1:0:Par.document.readyState=="complete"?
1:0:cfg.MenuUsesFrames?Par.frames[cfg.FirstLineFrame].document.body&&Par.frames[cfg.SecLineFrame].document.body?1:0:Par.document.body?1:0;
if(InitLdd) thisobj.Go();}
this.CnclSlct = function(){return false}
this.RePos = function(){
FWinW=ExpYes?FCmplnt?FHtml.clientWidth:FLoc.document.body.clientWidth:FLoc.innerWidth;
FWinH=ExpYes?FCmplnt?FHtml.clientHeight:FLoc.document.body.clientHeight:FLoc.innerHeight;
SWinW=ExpYes?SCmplnt?ScHtml.clientWidth:ScLoc.document.body.clientWidth:ScLoc.innerWidth;
SWinH=ExpYes?SCmplnt?ScHtml.clientHeight:ScLoc.document.body.clientHeight:ScLoc.innerHeight;
if(MstSz)thisobj.SizeMenu(FrstCntnr);
StaticPos=-1;
thisobj.ClcRl();
if(cfg.TargetLoc){thisobj.ClcTrgt();}
thisobj.ClcLft();
thisobj.ClcTp();
thisobj.PosMenu(FrstCntnr,cfg.StartTop,cfg.StartLeft);
if(cfg.RememberStatus)this.StMnu()}
this.UnLdd = function(){
Ldd=Crtd=false;
SetMenu="0";
var M=FrstCntnr?FrstCntnr.FrstMbr:null;
if(ExpYes){while(M!=null){if(M.CCn){this.MakeNull(M.CCn);M.CCn=null}M=M.PrvMbr}}
/*this.LdTmr=setInterval(function(){thisobj.ChckLdd()},100)*/}
this.UnLddTotal = function(){if(ExpYes){
thisobj.MakeNull(FrstCntnr);
FrstCntnr=RmbrNow=FLoc=ScLoc=DcLoc=SLdAgnWin=CurOvr=CloseTmr=Doc=Bod=Trigger=null}}
this.MakeNull = function(P){
var M=P.FrstMbr,Mi;
while(M!=null){Mi=M;if(M.CCn){this.MakeNull(M.CCn);M.CCn.mif=null;M.CCn=null}M=M.PrvMbr;Mi.PrvMbr=null;Mi=null}
P.FrstMbr=null}
this.ChckLdd = function(){if(!ExpYes){
if(ScLoc.document.body)this.Go();}
else if(ScLoc.document.readyState=="complete")this.Go();}
this.Go = function(){
if(this.LdTmr)clearInterval(this.LdTmr);this.LdTmr=null;
if(!Ldd){ Crtd=false;Ldd=true;
cfg.BeforeStart();
if(cfg.ScaleMenu){
if(document.defaultView&&document.defaultView.getComputedStyle)FntFc=parseInt(document.defaultView.getComputedStyle(document.body,'').getPropertyValue("font-size"))/16;
else if(ExpYes&&document.body.currentStyle)FntFc=parseInt(document.body.currentStyle.fontSize)/12}
status="Building menu";
FLoc=cfg.MenuUsesFrames?parent.frames[cfg.FirstLineFrame]:window;
ScLoc=cfg.MenuUsesFrames?parent.frames[cfg.SecLineFrame]:window;
DcLoc=cfg.MenuUsesFrames?parent.frames[cfg.DocTargetFrame]:window;
if(cfg.MenuUsesFrames){if(!FLoc)FLoc=window;if(!ScLoc)ScLoc=window;if(!DcLoc)DcLoc=window}
if(FLoc==ScLoc)AcrssFrms=false;
if(AcrssFrms)cfg.FirstLineHorizontal=cfg.MenuFramesVertical?0:cfg.FirstLineHorizontal?cfg.FirstLineHorizontal:1;
if(Exp6Plus||Opr7){
FHtml=FLoc.document.getElementsByTagName("HTML")[0];ScHtml=ScLoc.document.getElementsByTagName("HTML")[0];
FCmplnt=FLoc.document.compatMode.indexOf("CSS")==-1?false:true;SCmplnt=ScLoc.document.compatMode.indexOf("CSS")==-1?false:true}
FWinW=ExpYes?FCmplnt?FHtml.clientWidth:FLoc.document.body.clientWidth:FLoc.innerWidth;
FWinH=ExpYes?FCmplnt?FHtml.clientHeight:FLoc.document.body.clientHeight:FLoc.innerHeight;
SWinW=ExpYes?SCmplnt?ScHtml.clientWidth:ScLoc.document.body.clientWidth:ScLoc.innerWidth;
SWinH=ExpYes?SCmplnt?ScHtml.clientHeight:ScLoc.document.body.clientHeight:ScLoc.innerHeight;
FColW=FLoc.document.body;SColW=ScLoc.document.body;DColW=ScLoc.document.body;
if(cfg.TakeOverBgColor)FColW.style.backgroundColor=AcrssFrms?SColW.bgColor:DColW.bgColor;
if(FrstCreat||FLoc==ScLoc)FrstCntnr=this.CreateMenuStructure("cfg.Menu",cfg.NoOffFirstLineMenus,null);
else this.CreateMenuStructureAgain("cfg.Menu",cfg.NoOffFirstLineMenus);
this.SizeMenu(FrstCntnr);
thisobj.ClcRl();
if(cfg.TargetLoc){thisobj.ClcTrgt();}thisobj.ClcLft();thisobj.ClcTp();
this.PosMenu(FrstCntnr,cfg.StartTop,cfg.StartLeft);
Crtd=true;
SLdAgnWin=ExpYes?ScLoc.document.body:ScLoc;
//SLdAgnWin.onunload=thisobj.UnLdd;
//Trigger.onunload=thisobj.UnLddTotal;
//Trigger.onresize=thisobj.RePos;
if (ExpYes) {
//try {
SLdAgnWin.attachEvent('onunload', thisobj.UnLdd);
//Trigger.attachEvent('onunload', thisobj.UnLddTotal);
//Trigger.attachEvent('onresize', thisobj.RePos);
window.attachEvent('onresize', thisobj.RePos);
window.attachEvent('onunload', thisobj.UnLddTotal);
//} catch(e) {}
} else {
SLdAgnWin.addEventListener('unload', thisobj.UnLdd, true);
Trigger.addEventListener('unload', thisobj.UnLddTotal, true);
Trigger.addEventListener('resize', thisobj.RePos, true);
}
cfg.AfterBuild();
if(cfg.RememberStatus)thisobj.StMnu();
FrstCreat=false;
if(cfg.MenuVerticalCentered=="static"&&!AcrssFrms)setInterval(function(){thisobj.KeepPos()},50);
if(!ExpYes){FWinW=-1;thisobj.RePos()}
IniFlg=true;thisobj.Initiate();
status="Menu ready for use"}}
this.KeepPos = function(){
var TS=ExpYes?SCmplnt?ScHtml.scrollTop:ScLoc.document.body.scrollTop:ScLoc.pageYOffset;
if(TS!=StaticPos){
StaticPos+=(TS-StaticPos)*.2;
if(Math.abs(StaticPos-TS)<=1)StaticPos=TS;
FrstCntnr.OrgTop=cfg.StartTop+StaticPos;
FrstCntnr.style.top=FrstCntnr.mif.style.top=FrstCntnr.OrgTop+P_X}}
this.ClcRl = function() {
cfg.StartTop=M_StrtTp<1&&M_StrtTp>0?M_StrtTp*FWinH:M_StrtTp;cfg.StartLeft=M_StrtLft<1&&M_StrtLft>0?M_StrtLft*FWinW:M_StrtLft;}
this.ClcTrgt = function(){
var TLoc=FLoc.document.getElementById(cfg.TargetLoc);
while(TLoc){cfg.StartTop+=TLoc.offsetTop;cfg.StartLeft+=TLoc.offsetLeft;TLoc=TLoc.offsetParent}}
this.ClcLft = function(){
if(cfg.MenuCentered.indexOf("left")==-1){
var Sz=FWinW-parseInt(FrstCntnr.style.width);
cfg.StartLeft+=cfg.MenuCentered.indexOf("right")!=-1?Sz:Sz/2;if(cfg.StartLeft<0)cfg.StartLeft=0}}
this.ClcTp = function(){
if(cfg.MenuVerticalCentered!="top"&&cfg.MenuVerticalCentered!="static"){
var Sz=FWinH-parseInt(FrstCntnr.style.height);
cfg.StartTop+=cfg.MenuVerticalCentered=="bottom"?Sz:0;if(cfg.StartTop<0)cfg.StartTop=0}}
this.SizeMenu = function(C){
var Cmplnt=C.Lvl==1?FCmplnt:SCmplnt,M=C.FrstMbr,Mi,i,W=0,H=0,Wd,Ht,RI,BRW=C.Lvl==1?cfg.BorderWidthMain:2*cfg.BorderWidthSub,BTWn=C.Lvl==1?cfg.BorderBtwnMain:cfg.BorderBtwnSub;
if(C.Lvl<=cfg.FirstLineHorizontal){
while(M!=null){W+=Math.round((M.Arr[5]<1?(M.Arr[5]*(M.Lvl==1?FWinW:SWinW)):(M.Arr[5]*FntFc)));Mi=M;M=M.PrvMbr}
W+=((C.NrItms-1)*BTWn+2*BRW)+cfg.LeftPaddng;
Ht=H=Math.round((Mi.Arr[4]<1?(Mi.Arr[4]*(Mi.Lvl==1?FWinH:SWinH)):(Mi.Arr[4]*FntFc)));H+=(2*BRW)}
else {
while(M!=null){H+=Math.round((M.Arr[4]<1?(M.Arr[4]*(M.Lvl==1?FWinH:SWinH)):(M.Arr[4]*FntFc)));Mi=M;M=M.PrvMbr}
H+=((C.NrItms-1)*BTWn+2*BRW)+cfg.TopPaddng;
Wd=W=Math.round((Mi.Arr[5]<1?(Mi.Arr[5]*(Mi.Lvl==1?FWinW:SWinW)):(Mi.Arr[5]*FntFc)));W+=(2*BRW)}
C.style.width=C.mif.style.width=W+P_X;C.style.height=C.mif.style.height=H+P_X;
M=C.FrstMbr;
while(M!=null){
if(M.Arr[5]<1){W=C.Lvl<=cfg.FirstLineHorizontal?(M.Arr[5]*(M.Lvl==1?FWinW:SWinW)):Wd;MstSz=1}
else W=(C.Lvl<=cfg.FirstLineHorizontal?M.Arr[5]:Wd)*FntFc;
if(M.Arr[4]<1){H=C.Lvl<=cfg.FirstLineHorizontal?Ht:(M.Arr[4]*(M.Lvl==1?FWinH:SWinH));MstSz=1}
else H=(C.Lvl<=cfg.FirstLineHorizontal?Ht:M.Arr[4])*FntFc;
W=Math.round(W);H=Math.round(H);
if (C.Lvl>1)W-=2;
if(M.value.indexOf("<")==-1) {
M.tpd=cfg.TopPaddng<0?(Math.round(H*.5-M.Arr[12]*FntFc)):cfg.TopPaddng;if(M.tpd<0||M.tpd>H)M.tpd=0;
M.ltp=cfg.LeftPaddng;if(M.ltp<0||M.ltp>W)M.ltp=0;
if((NavYes&&!Opr7)||MacExp5||Cmplnt){M.lx=M.ltp;M.tx=M.tpd}}
else
{
M.tpd = 0;
M.ltp = 0;
M.lx = 0;
M.tx = 0;
}
M.style.width=W-M.lx+P_X;M.style.height=H-M.tx+P_X;
M.style.paddingLeft=M.ltp+P_X;M.style.paddingTop=M.tpd+P_X;
if(M.ro){RI=(M.Lvl==1?FLoc:ScLoc).document.images[M.rid];RI.style.width=W+P_X;RI.style.height=H+P_X}
if(M.CCn)this.SizeMenu(M.CCn);
M=M.PrvMbr}}
this.PosMenu = function(Ct,Tp,Lt){
RLvl++;
var a,Mb=Ct.FrstMbr,MWt=parseInt(Mb.style.width)+Mb.lx,
MHt=parseInt(Mb.style.height)+Mb.tx,CWt=parseInt(Ct.style.width),CHt=parseInt(Ct.style.height),CCw,CCh,STp,SLt,Ti,Li,Hi,
BRW=RLvl==1?cfg.BorderWidthMain:cfg.BorderWidthSub,BTWn=RLvl==1?cfg.BorderBtwnMain:cfg.BorderBtwnSub;
if(RLvl==1&&AcrssFrms)!cfg.MenuFramesVertical?Tp=cfg.BottomUp?cfg.DistFrmFrameBrdr:FWinH-CHt-cfg.DistFrmFrameBrdr:Lt=cfg.RightToLeft?cfg.DistFrmFrameBrdr:FWinW-CWt-cfg.DistFrmFrameBrdr;
if(RLvl==2&&AcrssFrms)!cfg.MenuFramesVertical?Tp=cfg.BottomUp?SWinH-CHt:0:Lt=cfg.RightToLeft?SWinW-CWt:0;
if(RLvl==2){Tp+=cfg.VerCorrect;Lt+=cfg.HorCorrect}
Ct.style.top=Ct.mif.style.top=RLvl==1?Tp+P_X:0;Ct.OrgTop=Tp;
Ct.style.left=Ct.mif.style.left=RLvl==1?Lt+P_X:0;Ct.OrgLeft=Lt;
if(RLvl<=cfg.FirstLineHorizontal){Hi=1;Li=CWt-MWt-2*BRW;Ti=0}
else{Hi=Li=0;Ti=CHt-MHt-2*BRW}
if (RLvl>1)Ti-=cfg.BorderWidthSub+1;
if (RLvl>1)Li+=cfg.BorderWidthSub+1;
while(Mb!=null){
Mb.style.left=Li+BRW+P_X;Mb.style.top=Ti+BRW+P_X;
if(Mb.CCn){
if(cfg.RightToLeft)CCw=parseInt(Mb.CCn.style.width);
if(cfg.BottomUp)CCh=parseInt(Mb.CCn.style.height);
if(Hi){STp=cfg.BottomUp?Ti-CCh:Ti+MHt+2*BRW;SLt=cfg.RightToLeft?Li+MWt-CCw:Li}
else{ SLt=cfg.RightToLeft?Li-CCw+cfg.ChildOverlap*MWt+BRW:Li+(1-cfg.ChildOverlap)*MWt+BRW;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -