📄 zpmenu.js
字号:
this.item_addDefaultIcon(item,"zpMenu-noicon");return item;};Zapatec.Menu.prototype.alignSubMenu=function(objSubMenu){var arrIcons=objSubMenu.__zp_icons;var arrIconsSrc=[];for(var iIcon=0;iIcon<arrIcons.length;iIcon++){arrIconsSrc.push(arrIcons[iIcon].src);}var objMenu=this;Zapatec.Transport.preloadImages({urls:arrIconsSrc,onLoad:function(){var iMaxIconWidth=0;for(var iIcon=0;iIcon<arrIcons.length;iIcon++){var iIconWidth=arrIcons[iIcon].width;if(iIconWidth&&iMaxIconWidth<iIconWidth){iMaxIconWidth=iIconWidth;}}if(!objMenu.styleSheet){objMenu.styleSheet=new Zapatec.StyleSheet();}objMenu.styleSheet.addRule('#'+objSubMenu.id+' .icon div','width:'+iMaxIconWidth+'px');},timeout:60000});};Zapatec.Menu.prototype.item_addDefaultIcon=function(item,className){if(!className){return;}var last_td=item.firstChild.firstChild.firstChild.lastChild,td;var td=Zapatec.Utils.createElement("td");td.className="tgb icon "+className;last_td.parentNode.insertBefore(td,last_td);Zapatec.Utils.createElement('div',td);};Zapatec.Menu.prototype.item_addIcon=function(item,img){var last_td=item.firstChild.firstChild.firstChild;var td;last_td=img?last_td.lastChild:last_td.firstChild;if(!img||!item.__zp_icon){td=Zapatec.Utils.createElement("td");td.className="tgb "+(img?"icon":"minus");last_td.parentNode.insertBefore(td,last_td);}else{td=item.__zp_icon;img.style.display="none";}var objDiv=Zapatec.Utils.createElement('div',td);if(!img){objDiv.innerHTML=" ";item.className+=" zpMenu-item-more";item.__zp_state=true;item.__zp_expand=td;}else{objDiv.appendChild(img);item.__zp_icon=td;}};Zapatec.Menu.prototype.itemClicked=function(item_id){this.selectedItem=this.toggleItem(item_id);if(this.selectedItem){Zapatec.Menu.selectItem(this.selectedItem);}this.onItemSelect(item_id);};Zapatec.Menu.prototype.toggleItem=function(item_id,state){if(!item_id){return null;}if(this.selectedItem){Zapatec.Menu.unselectItem(this.selectedItem);}var item=this.items[item_id];if(typeof state=="undefined")state=!item.__zp_state;if(state!=item.__zp_state){var subtree=this._getTree(item.__zp_subtree,this.creating_now);if(subtree){if(state){for(var i=0;i<subtree.__zp_items.length;i++){var subItemID=subtree.__zp_items[i];Zapatec.Menu.unselectItem(this.items[subItemID]);if(subtree.__zp_activeitem==subItemID)subtree.__zp_activeitem='';}}else{for(var i=0;i<subtree.__zp_items.length;i++){var subItemID=subtree.__zp_items[i];this.toggleItem(subItemID,state);Zapatec.Menu.unselectItem(this.items[subItemID]);if(subtree.__zp_activeitem==subItemID)subtree.__zp_activeitem='';}}this.treeSetDisplay(subtree,state);Zapatec.Utils.removeClass(item,"zpMenu-item-expanded");Zapatec.Utils.removeClass(item,"zpMenu-item-collapsed");Zapatec.Utils.addClass(item,state?"zpMenu-item-expanded":"zpMenu-item-collapsed");}var img=item.__zp_expand;if(img)img.className="tgb "+(state?"minus":"plus");item.__zp_state=state;if(state){var hideItems=this._getTree(item.__zp_parent).__zp_items;for(var i=hideItems.length;--i>=0;){if(hideItems[i]!=item_id&&hideItems[i].__zp_state){this.toggleItem(hideItems[i],false);}}}}return item;};Zapatec.Menu.prototype.collapseAll=function(){for(var i in this.trees)this.toggleItem(this._getTree(i).__zp_item,false);};Zapatec.Menu.prototype.expandAll=function(){for(var i in this.trees)this.toggleItem(this._getTree(i).__zp_item,true);};Zapatec.Menu.prototype.toggleAll=function(){for(var i in this.trees)this.toggleItem(this._getTree(i).__zp_item);};Zapatec.Menu.prototype.sync=function(item_id){var item=this.items[item_id];if(item){this.collapseAll();this.selectedItem=item;var path=[];while(item.__zp_parent){path[path.length]=item;var parentItem=this._getTree(item.__zp_parent);if(parentItem.__zp_item){item=this.items[parentItem.__zp_item];}else{break;}}for(var ii=path.length;--ii>=0;){var item=path[ii];var item_id=item.__zp_item;this.itemShow(item_id);var menu=this._getTree(item.__zp_parent);menu.__zp_activeitem=item_id;Zapatec.Menu.selectItem(item);}}};Zapatec.Menu.prototype.highlightPath=function(item_id){this.putOnTop();var item=this.items[item_id];if(item){var a=[];while(item.__zp_parent){a[a.length]=item;var pt=this._getTree(item.__zp_parent);if(pt.__zp_item)item=this.items[pt.__zp_item];elsebreak;}for(var i=a.length;--i>=0;){Zapatec.Utils.addClass(a[i],'zpMenuPath');}}};Zapatec.Menu.prototype.destroy=function(){var p=this.top_parent;p.parentNode.removeChild(p);};Zapatec.Menu.prototype._getTree=function(tree_id,dont_call){var tree=this.trees[tree_id];if(typeof tree=="function"){if(dont_call){tree=null;}else{tree();tree=this.trees[tree_id];this.treeSetDisplay(tree,false);}}return tree;};Zapatec.Menu.prototype.onItemSelect=function(){};Zapatec.Menu.onItemToggle=function(){var item=this;var body=document.body;while(item&&item!=body&&!/zpMenu-item/.test(item.className))item=item.parentNode;Zapatec.Menu.all[item.__zp_tree].itemClicked(item.__zp_item);};Zapatec.Menu.prototype.setTriggerObject=function(triggerObject){if(!this.config.triggerEvent){return;}var strTriggerEvent=this.config.triggerEvent;var strTriggerKey=this.config.triggerKey;var objTriggerElements=[];if(triggerObject){if(typeof triggerObject=='string'){var objElement=document.getElementById(triggerObject);if(objElement){objTriggerElements.push({triggerObject:objElement,triggerArgs:null});}}else if(typeof triggerObject=='object'){if(triggerObject==window.document||typeof triggerObject.length=='undefined'){objTriggerElements.push({triggerObject:triggerObject,triggerArgs:null});}else{for(var iObj=0;iObj<triggerObject.length;iObj++){var triggerElement=triggerObject[iObj];if(triggerElement){if(typeof triggerElement=='string'){var objElement=document.getElementById(triggerElement);if(objElement){objTriggerElements.push({triggerObject:objElement,triggerArgs:null});}}else if(typeof triggerElement=='object'){if(typeof triggerElement.triggerObject!='undefined'&&typeof triggerElement.triggerArgs!='undefined'){if(typeof triggerElement.triggerObject=='string'){var objElement=document.getElementById(triggerElement.triggerObject);if(objElement){objTriggerElements.push({triggerObject:objElement,triggerArgs:triggerElement.triggerArgs});}}else if(typeof triggerElement.triggerObject=='object'){objTriggerElements.push(triggerElement);}}else{objTriggerElements.push({triggerObject:triggerElement,triggerArgs:null});}}}}}}}if(objTriggerElements.length==0){return;}var objMenu=this;if(strTriggerEvent=='mousedown'||strTriggerEvent=='mouseup'||strTriggerEvent=='click'){var funcSetupTriggerEvent=function(objTriggerElement){if(strTriggerKey==null||strTriggerKey=="right"||strTriggerKey=="both"){objTriggerElement.triggerObject.oncontextmenu=function(){return false};}Zapatec.Utils.addEvent(objTriggerElement.triggerObject,'mouseup',function(objEvent){objEvent||(objEvent=window.event);var objMousePos=Zapatec.Utils.getMousePos(objEvent);var button;if(objEvent.button){button=objEvent.button;}else{button=objEvent.which;}if(window.opera){if(button==1&&objMenu.top_parent.style.display=='none'){setTimeout(function(){objMenu.triggerObject=objTriggerElement.triggerObject;objMenu.triggerArgs=objTriggerElement.triggerArgs;objMenu.popupMenu(objMousePos.pageX,objMousePos.pageY);},100);return Zapatec.Utils.stopEvent(objEvent);}}else{if(strTriggerKey=='both'||(strTriggerKey=='left'&&button==1)||((!strTriggerKey||strTriggerKey=='right')&&(button>1||objEvent.metaKey))){setTimeout(function(){objMenu.triggerObject=objTriggerElement.triggerObject;objMenu.triggerArgs=objTriggerElement.triggerArgs;objMenu.popupMenu(objMousePos.pageX,objMousePos.pageY);},100);Zapatec.Utils.stopEvent(objEvent);objEvent.returnValue=true;return false;}}});};for(var iEl=0;iEl<objTriggerElements.length;iEl++){funcSetupTriggerEvent(objTriggerElements[iEl]);}}else if(strTriggerEvent=='keydown'||strTriggerEvent=='keyup'||strTriggerEvent=='keypress'){var funcSetupTriggerEvent=function(objTriggerElement){Zapatec.Utils.addEvent(objTriggerElement.triggerObject,'keydown',function(objEvent){objEvent||(objEvent=window.event);if(objEvent.keyCode==strTriggerKey){objMenu.triggerObject=objTriggerElement.triggerObject;objMenu.triggerArgs=objTriggerElement.triggerArgs;objMenu.popupMenu();return Zapatec.Utils.stopEvent(objEvent);}});};for(var iEl=0;iEl<objTriggerElements.length;iEl++){funcSetupTriggerEvent(objTriggerElements[iEl])}}};Zapatec.Menu.MOUSEOUT=0;Zapatec.Menu.MOUSEOVER=1;Zapatec.Menu.CLICK=2;Zapatec.Menu.animations={};Zapatec.Menu.animations.fade=function(ref,counter){var f=ref.filters,done=(counter==100);if(f){if(!done&&ref.style.filter.indexOf("alpha")==-1){ref.style.filter+=' alpha(opacity='+counter+')';}else if(f.length&&f.alpha)with(f.alpha){if(done)enabled=false;else{opacity=counter;enabled=true}}}else{ref.style.opacity=ref.style.MozOpacity=counter/100.1;}};Zapatec.Menu.animations.slide=function(ref,counter){if(counter!=100){var cP=Math.pow(Math.sin(Math.PI*counter/200),0.75);if(typeof ref.__zp_origmargintop=='undefined'){ref.__zp_origmargintop=ref.style.marginTop;}ref.style.marginTop='-'+parseInt(ref.offsetHeight*(1-cP))+'px';ref.style.clip='rect('+parseInt(ref.offsetHeight*(1-cP))+'px,'+ref.offsetWidth+'px,'+ref.offsetHeight+'px,0)';}else{if(typeof ref.__zp_origmargintop!='undefined'){ref.style.marginTop=ref.__zp_origmargintop;}try{ref.style.clip='';}catch(objException){ref.style.clip='rect(auto,auto,auto,0)';}}};Zapatec.Menu.animations.glide=function(ref,counter){if(counter!=100){var cP=Math.pow(Math.sin(Math.PI*counter/200),0.75);ref.style.clip='rect(0,'+ref.offsetWidth+'px,'+parseInt(ref.offsetHeight*cP)+'px,0)';}else{try{ref.style.clip='';}catch(objException){ref.style.clip='rect(0,auto,auto,0)';}}};Zapatec.Menu.animations.wipe=function(ref,counter){if(counter!=100){ref.style.clip='rect(0,'+parseInt(ref.offsetWidth*(counter/100))+'px,'+parseInt(ref.offsetHeight*(counter/100))+'px,0)';}else{try{ref.style.clip='';}catch(objException){ref.style.clip='rect(0,auto,auto,0)';}}};Zapatec.Menu.animations.unfurl=function(ref,counter){if(counter<=50){ref.style.clip='rect(0,'+parseInt(ref.offsetWidth*(counter/50))+'px,10px,0)';}else if(counter<100){ref.style.clip='rect(0,'+ref.offsetWidth+'px,'+parseInt(ref.offsetHeight*((counter-50)/50))+'px,0)';}else{try{ref.style.clip='';}catch(objException){ref.style.clip='rect(0,auto,auto,0)';}}};Zapatec.Menu.prototype.addAnimation=function(animation){this.animations[this.animations.length]=Zapatec.Menu.animations[animation];};Zapatec.Menu.prototype.treeSetDisplay=function(menu,show){if(!menu.__zp_initialized){menu.style.visibility='hidden';menu.style.left='-9999px';menu.style.top='-9999px';if(menu.__zp_dropshadow){menu.__zp_dropshadow.style.visibility='hidden';menu.__zp_dropshadow.style.left='-9999px';menu.__zp_dropshadow.style.top='-9999px';}menu.__zp_initialized=true;return;}var treeId=menu.__zp_tree||menu.__zp_menu.firstChild.__zp_tree;var tree;if(treeId){tree=Zapatec.Menu.all[treeId];}if(!tree){return;}if(tree.animations.length==0){if(show){menu.style.visibility='inherit';if(menu.__zp_dropshadow){menu.__zp_dropshadow.style.visibility='inherit';}}else{menu.style.visibility='hidden';menu.style.left='-9999px';menu.style.top='-9999px';if(menu.__zp_dropshadow){menu.__zp_dropshadow.style.visibility='hidden';menu.__zp_dropshadow.style.left='-9999px';menu.__zp_dropshadow.style.top='-9999px';}}return;}menu.__zp_anim_timer|=0;clearTimeout(menu.__zp_anim_timer);menu.__zp_anim_counter|=0;if(show&&!menu.__zp_anim_counter){menu.style.visibility='inherit';if(menu.__zp_dropshadow){menu.__zp_dropshadow.style.visibility='inherit';}}for(var ii=0;ii<tree.animations.length;ii++){tree.animations[ii](menu,menu.__zp_anim_counter);if(menu.__zp_dropshadow&&tree.animations[ii]!=Zapatec.Menu.animations.fade){tree.animations[ii](menu.__zp_dropshadow,menu.__zp_anim_counter);}}if(!(show&&menu.__zp_anim_counter==100)){menu.__zp_anim_counter+=tree.config.animSpeed*(show?1:-1);if(menu.__zp_anim_counter>100){menu.__zp_anim_counter=100;menu.__zp_anim_timer=setTimeout(function(){tree.treeSetDisplay(menu,show);},50);}else if(menu.__zp_anim_counter<=0){menu.__zp_anim_counter=0;menu.style.visibility='hidden';menu.style.left='-9999px';menu.style.top='-9999px';if(menu.__zp_dropshadow){menu.__zp_dropshadow.style.visibility='hidden';menu.__zp_dropshadow.style.left='-9999px';menu.__zp_dropshadow.style.top='-9999px';}}else{menu.__zp_anim_timer=setTimeout(function(){tree.treeSetDisplay(menu,show);},50);}}};Zapatec.Menu.prototype.mouseOver=function(sId){var oEl=document.getElementById(sId);if(oEl){var oTree=oEl.__zp_tree||oEl.firstChild.__zp_tree;if(oTree){oTree=Zapatec.Menu.all[oTree];if(oTree){oTree.itemMouseHandler(oEl.__zp_item,Zapatec.Menu.MOUSEOVER);}}}};Zapatec.Menu.onItemMouseOver=function(){var item=this,tree=null;while(item&&item!=document.body){var t_id=item.__zp_tree||item.firstChild.__zp_tree;if(t_id)tree=Zapatec.Menu.all[t_id];var itemClassName=item.className;if(/zpMenu-item/.test(itemClassName)&&!/zpMenu-item-hr/.test(itemClassName)){tree.itemMouseHandler(item.__zp_item,Zapatec.Menu.MOUSEOVER);}item=tree&&item.__zp_treeid?tree.items[item.__zp_item]:item.parentNode;}return true;};Zapatec.Menu.prototype.mouseOut=function(sId){var oEl=document.getElementById(sId);if(oEl){var oTree=oEl.__zp_tree||oEl.firstChild.__zp_tree;if(oTree){oTree=Zapatec.Menu.all[oTree];if(oTree){oTree.itemMouseHandler(oEl.__zp_item,Zapatec.Menu.MOUSEOUT);}}}};Zapatec.Menu.onItemMouseOut=function(){var item=this,tree=null;while(item&&item!=document.body){var t_id=item.__zp_tree||item.firstChild.__zp_tree;if(t_id)tree=Zapatec.Menu.all[t_id];var itemClassName=item.className;if(/zpMenu-item/.test(itemClassName)&&!/zpMenu-item-hr/.test(itemClassName)&&!(/zpMenu-level-1/.test(itemClassName)&&!/zpMenu-item-selected/.test(itemClassName))){tree.itemMouseHandler(item.__zp_item,Zapatec.Menu.MOUSEOUT);}item=tree&&item.__zp_treeid?tree.items[item.__zp_item]:item.parentNode;}return false;};Zapatec.Menu.onItemClick=function(ev){var item=this;if(!/zpMenuDisabled/.test(item.className)){while(item&&item!=document.body){if(item.nodeName&&item.nodeName.toLowerCase()=='a'){return true;}if(/zpMenu-item/.test(item.className)){var objMenu=Zapatec.Menu.all[item.__zp_tree];if(!objMenu.config.preventDoubleCall){objMenu.called=false;}if(!objMenu.called){if(objMenu.config.onClick&&item.__zp_subtree&&(/zpMenu-top/.test(objMenu.trees[item.__zp_parent].className))){objMenu.itemMouseHandler(item.__zp_item,Zapatec.Menu.CLICK);return Zapatec.Utils.stopEvent(ev);}var itemLink=item.getElementsByTagName('a');var itemInput=item.getElementsByTagName('input');var itemSelect=item.getElementsByTagName('select');if(itemLink&&itemLink.item(0)&&itemLink.item(0).getAttribute('href')&&itemLink.item(0).getAttribute('href')!='#'&&itemLink.item(0).getAttribute('href')!=window.document.location.href+'#'&&itemLink.item(0).getAttribute('href')!='javascript:void(0)'){var href=itemLink.item(0).getAttribute('href');var target=itemLink.item(0).getAttribute('target');if(objMenu.config.rememberPath||objMenu.config.pathCookie!='__zp_item'){Zapatec.Utils.writeCookie(objMenu.config.pathCookie,item.__zp_item);}try{ev||(ev=window.event);if(target){window.open(href,target);}else if(ev&&ev.shiftKey){window.open(href,"_blank");}else{window.location.href=href;}}catch(e){};if(objMenu.config.triggerEvent){objMenu.hideMenu();}else{objMenu.collapseAll();while(Zapatec.Menu.selectedItemsStack.length){var oTopItem=Zapatec.Menu.selectedItemsStack.pop();oTopItem.onmouseout();}}}else if(itemInput&&itemInput.item(0)){var inp=itemInput.item(0);var type=inp.getAttribute('type');if(type=='checkbox'){if(inp.checked){inp.checked=false;}else{inp.checked=true;}}else if(type=='radio'){inp.checked=true;}}else if(itemSelect&&itemSelect.item(0)){return true;}else if(item.__zp_subtree){objMenu.itemMouseHandler(item.__zp_item,Zapatec.Menu.CLICK);}else if(objMenu.config.triggerEvent){objMenu.hideMenu();}if(objMenu.config.preventDoubleCall){objMenu.called=true;}return Zapatec.Utils.stopEvent(ev);}}item=item.parentNode;}}return false;};Zapatec.Menu.prototype.itemMouseHandler=function(item_id,type){if(type){this.putOnTop();}else{this.restoreZIndex();}var item=this.items[item_id];if(!item)return;var menu=this._getTree(item.__zp_parent);if(type<2&&window.opera&&this.config.slide){var objSubtree=this._getTree(item.__zp_subtree);if(objSubtree&&objSubtree.__zp_anim_counter&&objSubtree.__zp_anim_counter<100){return;}}if(menu&&menu.__zp_activeitem!=item_id){if(menu.__zp_activeitem){var lastItem=this.items[menu.__zp_activeitem];clearTimeout(lastItem.__zp_dimtimer);clearTimeout(lastItem.__zp_mousetimer);var objMenu=this;setTimeout(function(){Zapatec.Menu.unselectItem(lastItem);if(lastItem.__zp_state)objMenu.toggleItem(lastItem.__zp_item,false);Zapatec.Menu.selectItem(item);},0);}else{setTimeout(function(){Zapatec.Menu.selectItem(item);},0);}menu.__zp_activeitem=item_id;}clearTimeout(item.__zp_dimtimer);if(type==Zapatec.Menu.MOUSEOUT){item.__zp_dimtimer=setTimeout(function(){Zapatec.Menu.unselectItem(item);if(menu.__zp_activeitem==item_id)menu.__zp_activeitem='';},this.config.hideDelay);}clearTimeout(item.__zp_mousetimer);if(this.config.onClick&&!this.clickDone){if(/zpMenu-top/.test(this.trees[item.__zp_parent].className)&&(type==Zapatec.Menu.MOUSEOVER))return;if(type==Zapatec.Menu.CLICK)this.clickDone=true;}if(!item.__zp_state&&type){item.__zp_mousetimer=setTimeout('Zapatec.Menu.all["'+item.__zp_tree+'"].itemShow("'+item.__zp_item+'")',(this.config.showDelay||1));}else if(item.__zp_state&&!type){item.__zp_mousetimer=setTimeout('Zapatec.Menu.all["'+item.__zp_tree+'"].itemHide("'+item.__zp_item+'")',(this.config.hideDelay||1));}};Zapatec.Menu.prototype.itemShow=function(item_id){var item=this.items[item_id];if(/zpMenuDisabled/.test(item.className)){return;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -