📄 dropmenu.js
字号:
var AgntUsr=navigator.userAgent.toLowerCase();
var DomYes=document.getElementById?1:0;
var NavYes=AgntUsr.indexOf('mozilla')!=-1&&AgntUsr.indexOf('compatible')==-1?1:0;
var ExpYes=AgntUsr.indexOf('msie')!=-1?1:0;
var Opr=AgntUsr.indexOf('opera')!=-1?1:0;
var DomNav=DomYes&&NavYes?1:0;
var DomExp=DomYes&&ExpYes?1:0;
var Nav4=NavYes&&!DomYes&&document.layers?1:0;
var Exp4=ExpYes&&!DomYes&&document.all?1:0;
var PosStrt=(NavYes||ExpYes)&&!Opr?1:0;
var FrstLoc,ScLoc,DcLoc;
var ScWinWdth,ScWinHght,FrstWinWdth,FrstWinHght;
var ScLdAgainWin;
var FirstColPos,SecColPos,DocColPos;
var RcrsLvl=0;
var FrstCreat=1,Loadd=0,Creatd=0,IniFlg,AcrssFrms=1;
var FrstCntnr=null,CurrntOvr=null,CloseTmr=null;
var PreCntnr=null;
var CntrTxt,TxtClose,ImgStr;
var Ztop=1;
var ShwFlg=0;
var M_StrtTp=StartTop,M_StrtLft=StartLeft;
var StaticPos=0;
var LftXtra=DomNav?LeftPaddng:0;
var TpXtra=DomNav?TopPaddng:0;
var M_Hide=Nav4?'hide':'hidden';
var M_Show=Nav4?'show':'visible';
var Par=parent.frames[0]&&FirstLineFrame!=SecLineFrame?parent:window;
var Doc=Par.document;
var Bod=Doc.body;
var Trigger=NavYes?Par:Bod;
var SelectPathStru;
var SubPathNum=0;
var MenuClicked;
MenuTextCentered=MenuTextCentered==1||MenuTextCentered=='center'?'center':MenuTextCentered==0||MenuTextCentered!='right'?'left':'right';
WbMstrAlrts=["Item not defined: ","Item needs height: ","Item needs width: "];
if(Trigger.onload)Dummy=Trigger.onload;
if(DomNav&&!Opr)Trigger.addEventListener('load',Go,false);
else Trigger.onload=Go;
function Dummy(){}
function CnclSlct(){return false}
function RePos(){
if(NoOffFirstLineMenus<=0) return;
FrstWinWdth=ExpYes?FrstLoc.document.body.clientWidth:FrstLoc.innerWidth;
FrstWinHght=ExpYes?FrstLoc.document.body.clientHeight:FrstLoc.innerHeight;
ScWinWdth=ExpYes?ScLoc.document.body.clientWidth:ScLoc.innerWidth;
ScWinHght=ExpYes?ScLoc.document.body.clientHeight:ScLoc.innerHeight;
if(MenuCentered=='justify'&&FirstLineHorizontal){
FrstCntnr.style.width=FrstWinWdth;
ClcJus();
var P=FrstCntnr.FrstMbr,W=Menu1[5],i;
for(i=0;i<NoOffFirstLineMenus;i++){
P.style.width=W;
P=P.PrvMbr;
}
}
StaticPos=-1;
if(TargetLoc)ClcTrgt();
if(MenuCentered)ClcLft();
if(MenuVerticalCentered)ClcTp();
//modify by wangcq
var count=NoOffFirstLineMenus/MenuLineCount;
if((NoOffFirstLineMenus % MenuLineCount)!=0){
count=count+1;
}
var Cntnr=document.LastCntnr;
var i=1;
while(Cntnr!=null){
PosMenu(Cntnr,StartTop+(count-i)*22,StartLeft);
Cntnr=Cntnr.Pre;
i++;
}
//end modify
//PosMenu(FrstCntnr,StartTop,StartLeft);
}
function UnLoaded(){
if(CloseTmr)clearTimeout(CloseTmr);
Loadd=0; Creatd=0;
if(HideTop){
var FCStyle=Nav4?FrstCntnr:FrstCntnr.style;
FCStyle.visibility=M_Hide;
}
}
function ReDoWhole(){
if(ScWinWdth!=ScLoc.innerWidth||ScWinHght!=ScLoc.innerHeight||FrstWinWdth!=FrstLoc.innerWidth||FrstWinHght!=FrstLoc.innerHeight)Doc.location.reload();
}
function Check(WMnu,NoOf){
var i,array,ArrayLoc;
ArrayLoc=parent.frames[0]?parent.frames[FirstLineFrame]:self;
for(i=0;i<NoOf;i++){
array=WMnu+eval(i+1);
if(!ArrayLoc[array]){WbMstrAlrt(0,array); return false;}
if(i==0){
if(!ArrayLoc[array][4]){WbMstrAlrt(1,array); return false;}
if(!ArrayLoc[array][5]){WbMstrAlrt(2,array); return false;}
}
if(ArrayLoc[array][3])if(!Check(array+'_',ArrayLoc[array][3])) return false;}
return true;
}
function WbMstrAlrt(No,Xtra){
return confirm(WbMstrAlrts[No]+Xtra+' ')
}
function Go(){
Dummy();
if(Loadd||!PosStrt)return;
BeforeStart();
Creatd=0; Loadd=1;
status='Building menu';
if(FrstCreat){
if(FirstLineFrame =="" || !parent.frames[FirstLineFrame]){
FirstLineFrame=SecLineFrame;
if(FirstLineFrame =="" || !parent.frames[FirstLineFrame]){
FirstLineFrame=SecLineFrame=DocTargetFrame;
if(FirstLineFrame =="" || !parent.frames[FirstLineFrame])
FirstLineFrame=SecLineFrame=DocTargetFrame=''
}
}
if(SecLineFrame =="" || !parent.frames[SecLineFrame]){
SecLineFrame=DocTargetFrame;
if(SecLineFrame =="" || !parent.frames[SecLineFrame])
SecLineFrame=DocTargetFrame=FirstLineFrame
}
if(DocTargetFrame =="" || !parent.frames[DocTargetFrame])DocTargetFrame=SecLineFrame;
if(WebMasterCheck){
if(!Check('Menu',NoOffFirstLineMenus)){
status='build aborted';
}
}
FrstLoc=FirstLineFrame!=""?parent.frames[FirstLineFrame]:window;
ScLoc=SecLineFrame!=""?parent.frames[SecLineFrame]:window;
DcLoc=DocTargetFrame!=""?parent.frames[DocTargetFrame]:window;
if (FrstLoc==ScLoc) AcrssFrms=0;
if (AcrssFrms)FirstLineHorizontal=MenuFramesVertical?0:1;
FrstWinWdth=ExpYes?FrstLoc.document.body.clientWidth:FrstLoc.innerWidth;
FrstWinHght=ExpYes?FrstLoc.document.body.clientHeight:FrstLoc.innerHeight;
ScWinWdth=ExpYes?ScLoc.document.body.clientWidth:ScLoc.innerWidth;
ScWinHght=ExpYes?ScLoc.document.body.clientHeight:ScLoc.innerHeight;
if(Nav4){
CntrTxt=MenuTextCentered!='left'?"<div align='"+MenuTextCentered+"'>":"";
TxtClose="</font>"+MenuTextCentered!='left'?"</div>":""
}
}
FirstColPos=Nav4?FrstLoc.document:FrstLoc.document.body;
SecColPos=Nav4?ScLoc.document:ScLoc.document.body;
DocColPos=Nav4?DcLoc.document:ScLoc.document.body;
if (TakeOverBgColor)FirstColPos.bgColor=AcrssFrms?SecColPos.bgColor:DocColPos.bgColor;
if(MenuCentered=='justify'&&FirstLineHorizontal)ClcJus();
var count=NoOffFirstLineMenus/MenuLineCount;
if((NoOffFirstLineMenus % MenuLineCount)!=0){
count=count+1;
}
for(var i=1;i<=count;i++){
FrstCntnr=CreateMenuStructure('Menu',NoOffFirstLineMenus,MenuLineCount*(i-1)+1);
FrstCreat=AcrssFrms?0:1;
FrstCntnr.Level=1;
FrstCntnr.Pre=PreCntnr;
PreCntnr = FrstCntnr;
if(TargetLoc)ClcTrgt();
if(MenuCentered)ClcLft();
if(MenuVerticalCentered)ClcTp();
PosMenu(FrstCntnr,StartTop+(i-1)*22,StartLeft);
IniFlg=1;
Initiate();
}
document.LastCntnr=FrstCntnr;
Creatd=1;
ScLdAgainWin=ExpYes?ScLoc.document.body:ScLoc;
ScLdAgainWin.onunload=UnLoaded;
Trigger.onresize=Nav4?ReDoWhole:RePos;
AfterBuild();
if(WriteToFile==1)
wirte_file(document.body.innerHTML);
if(MenuVerticalCentered=='static'&&!AcrssFrms)setInterval('KeepPos()',250);
status='Menu ready for use'
}
function KeepPos(){
var TS=ExpYes?FrstLoc.document.body.scrollTop:FrstLoc.pageYOffset;
if(TS!=StaticPos){
var FCStyle=Nav4?FrstCntnr:FrstCntnr.style;
FCStyle.top=FrstCntnr.OrgTop=StartTop+TS;StaticPos=TS}}
function ClcJus(){
var a=BorderBtwnElmnts?1:2,b=BorderBtwnElmnts?BorderWidth:0;
var Size=Math.round(((FrstWinWdth-a*BorderWidth)/NoOffFirstLineMenus)-b),i,j;
for(i=1;i<NoOffFirstLineMenus+1;i++){
j=eval('Menu'+i);
j[5]=Size;
}
StartLeft=0;
}
function ClcTrgt(){
var TLoc=Nav4?FrstLoc.document.layers[TargetLoc]:DomYes?FrstLoc.document.getElementById(TargetLoc):FrstLoc.document.all[TargetLoc];
StartTop=M_StrtTp;
StartLeft=M_StrtLft;
if(DomYes){
while(TLoc){
StartTop+=TLoc.offsetTop;StartLeft+=TLoc.offsetLeft;TLoc=TLoc.offsetParent;
}
}
else{
StartTop+=Nav4?TLoc.pageY:TLoc.offsetTop;StartLeft+=Nav4?TLoc.pageX:TLoc.offsetLeft;
}
}
function ClcLft(){
if(MenuCentered!='left'&&MenuCentered!='justify'){
var Size=FrstWinWdth-(!Nav4?parseInt(FrstCntnr.style.width):FrstCntnr.clip.width);
StartLeft=M_StrtLft;
StartLeft+=MenuCentered=='right'?Size:Size/2;
}
}
function ClcTp(){
if(MenuVerticalCentered!='top'&&MenuVerticalCentered!='static'){
var Size=FrstWinHght-(!Nav4?parseInt(FrstCntnr.style.height):FrstCntnr.clip.height);
StartTop=M_StrtTp;
StartTop+=MenuVerticalCentered=='bottom'?Size:Size/2;
}
}
function PosMenu(CntnrPntr,Tp,Lt){
var Topi,Lefti,Hori;
var Cntnr=CntnrPntr;
var Mmbr=Cntnr.FrstMbr;
var CntnrStyle=!Nav4?Cntnr.style:Cntnr;
var MmbrStyle=!Nav4?Mmbr.style:Mmbr;
var PadL=Mmbr.value.indexOf('<')==-1?LftXtra:0;
var PadT=Mmbr.value.indexOf('<')==-1?TpXtra:0;
var MmbrWt=!Nav4?parseInt(MmbrStyle.width)+PadL:MmbrStyle.clip.width;
var MmbrHt=!Nav4?parseInt(MmbrStyle.height)+PadT:MmbrStyle.clip.height;
var CntnrWt=!Nav4?parseInt(CntnrStyle.width):CntnrStyle.clip.width;
var CntnrHt=!Nav4?parseInt(CntnrStyle.height):CntnrStyle.clip.height;
var SubTp,SubLt;
RcrsLvl++;
if (RcrsLvl==1 && AcrssFrms)!MenuFramesVertical?Tp=FrstWinHght-CntnrHt+(Nav4?4:0):Lt=RightToLeft?0:FrstWinWdth-CntnrWt+(Nav4?4:0);
if (RcrsLvl==2 && AcrssFrms)!MenuFramesVertical?Tp=0:Lt=RightToLeft?ScWinWdth-CntnrWt:0;
if (RcrsLvl==2 && AcrssFrms){
Tp+=VerCorrect;
Lt+=HorCorrect;
}
CntnrStyle.top=RcrsLvl==1?Tp:0;
Cntnr.OrgTop=Tp;
CntnrStyle.left=RcrsLvl==1?Lt:0;
Cntnr.OrgLeft=Lt;
if (RcrsLvl==1 && FirstLineHorizontal){
Hori=1;Lefti=CntnrWt-MmbrWt-2*BorderWidth;Topi=0;
}
else{
Hori=Lefti=0;Topi=CntnrHt-MmbrHt-2*BorderWidth;
}
while(Mmbr!=null){
MmbrStyle.left=Lefti+BorderWidth;
MmbrStyle.top=Topi+BorderWidth;
if(Nav4)Mmbr.CmdLyr.moveTo(Lefti+BorderWidth,Topi+BorderWidth);
if(Mmbr.ChildCntnr){
if(RightToLeft)ChldCntnrWdth=Nav4?Mmbr.ChildCntnr.clip.width:parseInt(Mmbr.ChildCntnr.style.width);
if(Hori){
SubTp=Topi+MmbrHt+2*BorderWidth;
SubLt=RightToLeft?Lefti+MmbrWt-ChldCntnrWdth:Lefti;
}
else{
SubLt=RightToLeft?Lefti-ChldCntnrWdth+ChildOverlap*MmbrWt+BorderWidth:Lefti+(1-ChildOverlap)*MmbrWt+BorderWidth;
SubTp=RcrsLvl==1&&AcrssFrms?Topi:Topi+ChildVerticalOverlap*MmbrHt;
}
PosMenu(Mmbr.ChildCntnr,SubTp,SubLt);
}
Mmbr=Mmbr.PrvMbr;
if(Mmbr){
MmbrStyle=!Nav4?Mmbr.style:Mmbr;
PadL=Mmbr.value.indexOf('<')==-1?LftXtra:0;
PadT=Mmbr.value.indexOf('<')==-1?TpXtra:0;
MmbrWt=!Nav4?parseInt(MmbrStyle.width)+PadL:MmbrStyle.clip.width;
MmbrHt=!Nav4?parseInt(MmbrStyle.height)+PadT:MmbrStyle.clip.height;
Hori?Lefti-=BorderBtwnElmnts?(MmbrWt+BorderWidth):(MmbrWt):Topi-=BorderBtwnElmnts?(MmbrHt+BorderWidth):(MmbrHt);
}
}
RcrsLvl--;
}
function Initiate(){
if(IniFlg){
var Cntnr=document.LastCntnr;
while(Cntnr!=null){
Init(Cntnr);
Cntnr=Cntnr.Pre;
}
ShowSelect(document,true);
Init(FrstCntnr);
IniFlg=0;
if(ShwFlg)AfterCloseAll();
ShwFlg=0;
}
}
function Init(CntnrPntr){
var Mmbr=CntnrPntr.FrstMbr;
var MCStyle=Nav4?CntnrPntr:CntnrPntr.style;
RcrsLvl++;
if(!MenuClicked || RcrsLvl!=1)
MCStyle.visibility=RcrsLvl==1?M_Show:M_Hide;
while(Mmbr!=null){
if(Mmbr.Hilite){
Mmbr.Hilite=0;
if(KeepHilite)LowItem(Mmbr);
}
if(Mmbr.ChildCntnr) Init(Mmbr.ChildCntnr);
Mmbr=Mmbr.PrvMbr;
}
RcrsLvl--;
}
function ClearAllChilds(Pntr){
var CPCCStyle;
while (Pntr){
if(Pntr.Hilite){
Pntr.Hilite=0;
if(KeepHilite)LowItem(Pntr);
if(Pntr.ChildCntnr){
CPCCStyle=Nav4?Pntr.ChildCntnr:Pntr.ChildCntnr.style;
CPCCStyle.visibility=M_Hide;
ClearAllChilds(Pntr.ChildCntnr.FrstMbr);
}
break;
}
Pntr=Pntr.PrvMbr;
}
}
function GoTo(){
SaveSubPath();
if(this.LinkTxt=='#') return;
if(this.LinkTxt){
if(this.LinkTxt.indexOf("?")==-1)
this.LinkTxt = this.LinkTxt+"?hciCurMenuPath="+GetCookie("hciCurMenuPath")+"&hciTopMenuPath="+GetCookie("hciTopMenuPath");
else
this.LinkTxt = this.LinkTxt+"&hciCurMenuPath="+GetCookie("hciCurMenuPath")+"&hciTopMenuPath="+GetCookie("hciTopMenuPath");
status='';
var HP=Nav4?this.LowLyr:this;
LowItem(HP);
this.LinkTxt.indexOf('javascript:')!=-1?eval(this.LinkTxt):DcLoc.location.href=this.LinkTxt;
MenuClicked=true;
}
}
function HiliteItem(P){
if(Nav4){
if(P.ro)P.document.images[P.rid].src=P.ri2;
else{
if(P.HiBck)P.bgColor=P.HiBck;
if(P.value.indexOf('<img')==-1){
P.document.write(P.Ovalue);
P.document.close();
}
}
}
else{
if(P.ro){
var Lc=P.Level==1?FrstLoc:ScLoc;
Lc.document.images[P.rid].src=P.ri2;
}
else{
if(P.HiBck)P.style.backgroundColor=P.HiBck;
if(P.HiFntClr)P.style.color=P.HiFntClr;
}
}
P.Hilite=1;
}
function LowItem(P){
if(P.ro){
if(Nav4)P.document.images[P.rid].src=P.ri1;
else{
var Lc=P.Level==1?FrstLoc:ScLoc;
Lc.document.images[P.rid].src=P.ri1;
}
}
else{
if(Nav4){
if(P.LoBck)P.bgColor=P.LoBck;
if(P.value.indexOf('<img')==-1){
P.document.write(P.value);
P.document.close();
}
}
else{
if(P.LoBck)P.style.backgroundColor=P.LoBck;
if(P.LwFntClr)P.style.color=P.LwFntClr;
}
}
}
function OpenMenu(){
if(!Loadd||!Creatd) return;
ShowSelect(document,false);
var TpScrlld=ExpYes?ScLoc.document.body.scrollTop:ScLoc.pageYOffset;
var LScrlld=ExpYes?ScLoc.document.body.scrollLeft:ScLoc.pageXOffset;
var CCnt=Nav4?this.LowLyr.ChildCntnr:this.ChildCntnr;
var ThisHt=Nav4?this.clip.height:parseInt(this.style.height);
var ThisWt=Nav4?this.clip.width:parseInt(this.style.width);
var ThisLft=AcrssFrms&&this.Level==1&&!FirstLineHorizontal?0:Nav4?this.Container.left:parseInt(this.Container.style.left);
var ThisTp=AcrssFrms&&this.Level==1&&FirstLineHorizontal?0:Nav4?this.Container.top:parseInt(this.Container.style.top);
var HP=Nav4?this.LowLyr:this;
CurrntOvr=this;
IniFlg=0;
//modify by wangcq
if(this.Container.Level==1){
var Cntnr=document.LastCntnr;
while(Cntnr!=null){
ClearAllChilds(Cntnr.FrstMbr);
Cntnr=Cntnr.Pre;
}
window.first = this.value;
SubPathNum = 1;
}else{
SetSubPath(this.Level,this.value);
ClearAllChilds(this.Container.FrstMbr);
}
//end modify
HiliteItem(HP);
if(CCnt!=null){
if(!ShwFlg){
ShwFlg=1;
BeforeFirstOpen();
}
var CCW=Nav4?this.LowLyr.ChildCntnr.clip.width:parseInt(this.ChildCntnr.style.width);
var CCH=Nav4?this.LowLyr.ChildCntnr.clip.height:parseInt(this.ChildCntnr.style.height);
var ChCntTL=Nav4?this.LowLyr.ChildCntnr:this.ChildCntnr.style;
var SubLt=AcrssFrms&&this.Level==1?CCnt.OrgLeft+ThisLft+LScrlld:CCnt.OrgLeft+ThisLft;
var SubTp=AcrssFrms&&this.Level==1?CCnt.OrgTop+ThisTp+TpScrlld:CCnt.OrgTop+ThisTp;
if(MenuWrap){
if(RightToLeft){
if(SubLt<LScrlld)SubLt=this.Level==1?LScrlld:SubLt+(CCW+(1-2*ChildOverlap)*ThisWt);
if(SubLt+CCW>ScWinWdth+LScrlld)SubLt=ScWinWdth+LScrlld-CCW;
}
else{
if(SubLt+CCW>ScWinWdth+LScrlld)SubLt=this.Level==1?ScWinWdth+LScrlld-CCW:SubLt-(CCW+(1-2*ChildOverlap)*ThisWt);
if(SubLt<LScrlld)SubLt=LScrlld;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -