⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 zpmenu.js

📁 zapatec suite 最新版 20070204,非常棒的ajax widgets 工具包
💻 JS
📖 第 1 页 / 共 3 页
字号:
/* * * Copyright (c) 2004-2005 by Zapatec, Inc. * http://www.zapatec.com * 1700 MLK Way, Berkeley, California, * 94709, U.S.A. * All rights reserved. * * */Zapatec.Menu=function(objArgs){if(arguments.length>1){var objConfig=arguments[1];objConfig.source=arguments[0];objArgs=objConfig;}Zapatec.Menu.SUPERconstructor.call(this,objArgs);};Zapatec.Menu.id="Zapatec.Menu";Zapatec.inherit(Zapatec.Menu,Zapatec.Widget);Zapatec.Menu.prototype.init=function(objArgs){this.config.container=null;this.config.dynamic=false;this.config.showDelay=0;this.config.hideDelay=500;this.config.onClick=false;this.config.vertical=false;this.config.scrollWithWindow=false;this.config.dropShadow=0;this.config.drag=false;this.config.slide=false;this.config.glide=false;this.config.fade=false;this.config.wipe=false;this.config.unfurl=false;this.config.animSpeed=10;this.config.defaultIcons=null;this.config.zIndex=0;this.config.rememberPath=false;this.config.pathCookie='__zp_item';this.config.triggerEvent=null;this.config.triggerKey=null;this.config.triggerObject=null;this.config.top=null;this.config.right=null;this.config.bottom=null;this.config.left=null;this.config.onInit=null;this.config.preventDoubleCall=false;this.called=false;Zapatec.Menu.SUPERclass.init.call(this,objArgs);};Zapatec.Menu.prototype.discard=function(){Zapatec.ScrollWithWindow.unregister(this.rootMenu);Zapatec.Menu.SUPERclass.discard.call(this);};Zapatec.Menu.prototype.addStandardEventListeners=function(){Zapatec.Menu.SUPERclass.addStandardEventListeners.call(this);this.addEventListener('loadThemeEnd',function(){this.onThemeLoad();});};Zapatec.Menu.onTop=null;Zapatec.Menu.prototype.restoreZIndex=function(){this.top_parent.style.zIndex=this.config.zIndex;Zapatec.Menu.onTop=null;};Zapatec.Menu.prototype.putOnTop=function(){var objOnTop=Zapatec.Menu.onTop;if(objOnTop){objOnTop.restoreZIndex();}this.top_parent.style.zIndex=2147483583;Zapatec.Menu.onTop=this;};Zapatec.Menu.prototype.onThemeLoad=function(){var self=this;this.triggerObject=null;this.triggerArgs=null;this.animations=[];this.container=Zapatec.Widget.getElementById(this.config.container);this.loadData();this.openMenus=[];this.clickDone=false;var objMenu=this;if(this.config.triggerEvent){this.setTriggerObject(this.config.triggerObject||window.document);Zapatec.Utils.addEvent(window.document,'mouseup',function(){objMenu.hideMenu()});Zapatec.Utils.addEvent(this.top_parent,'mouseup',function(objEvent){return Zapatec.Utils.stopEvent(objEvent);});Zapatec.Utils.addEvent(window.document,'keypress',function(objEvent){objEvent||(objEvent=window.event);if(objEvent.keyCode==27){for(var i=0;i<Zapatec.Menu.selectedItemsStack.length;i++){if(Zapatec.Menu.all[Zapatec.Menu.selectedItemsStack[i].__zp_tree]==objMenu){return;}}objMenu.hideMenu();}});}else{if(this.config.scrollWithWindow&&this.rootMenu){Zapatec.ScrollWithWindow.register(this.rootMenu);}if(this.config.drag){this.dragging=false;Zapatec.Transport.loadJS({url:Zapatec.zapatecPath+"zpobjects.js",onLoad:function(){Zapatec.Transport.loadJS({url:Zapatec.zapatecPath+"dom.js",onLoad:function(){Zapatec.Transport.loadJS({url:Zapatec.zapatecPath+"movable.js",onLoad:function(){Zapatec.Transport.loadJS({url:Zapatec.zapatecPath+"draggable.js",onLoad:function(){new Zapatec.Utils.Draggable({container:objMenu.rootMenu.parentNode,preserveSizes:false,eventCapture:true});},onError:function(){self.config.drag=false;}});},onError:function(){self.config.drag=false;}});},onError:function(){self.config.drag=false;}});},onError:function(){self.config.drag=false;}});}}if(this.config.fade){this.addAnimation('fade');}if(this.config.slide){this.addAnimation('slide');}else if(this.config.glide){this.addAnimation('glide');}else if(this.config.wipe){this.addAnimation('wipe');}else if(this.config.unfurl){this.addAnimation('unfurl');}if(typeof this.config.onInit=='function'){setTimeout(function(){objMenu.config.onInit();},0);}};Zapatec.Menu.prototype.loadDataHtml=function(objSource){if(!objSource){return;}this.list=objSource;this.items={};this.trees={};this.selectedItem=null;this.lastContainerNumber=0;this.menuId=objSource.id||Zapatec.Utils.generateID("tree");var objContainer=this.top_parent=Zapatec.Utils.createElement("div");objContainer.style.display='none';objContainer.style.textAlign='left';objContainer.__zp_menu=Zapatec.Utils.createElement("div",objContainer);objContainer.__zp_menu.className='zpMenu';objContainer.className="zpMenuContainer zpMenu-top";if(this.config.vertical){Zapatec.Utils.addClass(objContainer,"zpMenu-vertical-mode");}else{Zapatec.Utils.addClass(objContainer,"zpMenu-horizontal-mode");}var strRootMenuId=this.createTree(objSource,objContainer,0);this.rootMenu=this.trees[strRootMenuId];var objTheme=Zapatec.Utils.createElement('div');objTheme.className=this.getClassName({prefix:'zpMenu'});objTheme.appendChild(objContainer);if(this.container){this.container.appendChild(objTheme);}else{objSource.parentNode.insertBefore(objTheme,objSource);objSource.parentNode.removeChild(objSource);}Zapatec.Menu.all[this.menuId]=this;if(this.selectedItem){this.sync(this.selectedItem.__zp_item);}this.path=Zapatec.Utils.getCookie(this.config.pathCookie);if(this.path){Zapatec.Utils.writeCookie(this.config.pathCookie,'');}if(!this.config.triggerEvent){this.showMenu();if(!this.config.triggerEvent&&this.config.scrollWithWindow&&this.rootMenu){Zapatec.ScrollWithWindow.register(this.rootMenu);}}};Zapatec.Menu.all={};Zapatec.Menu.prototype.createTree=function(list,objContainer,level){objContainer.id='zpMenu'+this.id+'Container'+this.lastContainerNumber;this.lastContainerNumber++;var id;var intItem=1,bFirst=true;if(list)id=list.id;if(!id)id=Zapatec.Utils.generateID("tree.sub");varobjMenu=this;function _makeIt(){objMenu.creating_now=true;var last_li=null;var next_li;var i=(list?list.firstChild:null);var items=objContainer.__zp_items=[];objMenu.trees[id]=objContainer;objContainer.__zp_level=level;objContainer.__zp_treeid=id;objContainer.__zp_keymap={};var strOddEven;while(i){if(last_li)last_li.className+=" zpMenu-lines-c";if(i.nodeType!=1)i=i.nextSibling;else{next_li=Zapatec.Utils.getNextSibling(i,'li');if(i.tagName.toLowerCase()=='li'){last_li=objMenu.createItem(i,objContainer,next_li,level,intItem);if(last_li){if(!/zpMenu-item-hr/i.test(last_li.className)){strOddEven="zpMenu-item-"+(intItem%2==1?"odd":"even");Zapatec.Utils.addClass(last_li,strOddEven)intItem++}if(bFirst){bFirst=false;Zapatec.Utils.addClass(last_li,"zpMenu-item-first");}items[items.length]=last_li.__zp_item;}}i=next_li;}}if(last_li)Zapatec.Utils.addClass(last_li,"zpMenu-item-last");if(last_li&&(last_li.className.indexOf("zpMenu-item-first")>=0)&&(last_li.className.indexOf("zpMenu-item-last")>=0)){Zapatec.Utils.removeClass(last_li,"zpMenu-item-last");Zapatec.Utils.removeClass(last_li,"zpMenu-item-first");Zapatec.Utils.addClass(last_li,"zpMenu-item-single");}i=objContainer.firstChild;if(i&&!level){i.className=i.className.replace(/ zpMenu-lines-./g,"");i.className+=(i===last_li)?" zpMenu-lines-s":" zpMenu-lines-t";}if(last_li&&(level||last_li!=i)){last_li.className=last_li.className.replace(/ zpMenu-lines-./g,"");last_li.className+=" zpMenu-lines-b";}objMenu.creating_now=false;};if(this.config.dynamic&&level>0)this.trees[id]=_makeIt;else_makeIt();return id;};Zapatec.Menu.tabIndex=1000;Zapatec.Menu.prototype.createItem=function(li,objContainer,next_li,level,intItem){if(!li.firstChild){return;}var id=li.id||Zapatec.Utils.generateID("tree.item");var item=this.items[id]=Zapatec.Utils.createElement("div",objContainer.__zp_menu);item.id=this.formElementId({prefix:'zpMenu',suffix:'Item'});var t=Zapatec.Utils.createElement("table",item);var tb=Zapatec.Utils.createElement("tbody",t);var tr=Zapatec.Utils.createElement("tr",tb);var td=Zapatec.Utils.createElement("td",tr);var has_icon=false;if(!level){td.style.whiteSpace='nowrap';}t.className="zpMenu-table";t.cellSpacing=0;t.cellPadding=0;td.className="zpMenu-label"var title=li.getAttribute('title');if(title){td.setAttribute('title',title);}item.className="zpMenu-item"+(li.className?' '+li.className:'');Zapatec.Utils.addClass(item,"zpMenu-level-"+(level+1));item.__zp_item=id;item.__zp_tree=this.menuId;item.__zp_parent=objContainer.__zp_treeid;item.onmouseover=new Function('Zapatec.Widget.callMethod('+this.id+',"mouseOver","'+item.id+'")');item.onmouseout=new Function('Zapatec.Widget.callMethod('+this.id+',"mouseOut","'+item.id+'")');item.onclick=Zapatec.Menu.onItemClick;Zapatec.Utils.addClass(item,"zpMenu-item-"+(intItem%2==1?"odd":"even"));var fc,subtree=false,accessKey=null;var getAccessKey=function(node){var key=null;if(node.nodeType==1){if(key=node.getAttribute('accesskey')){node.removeAttribute('accesskey',false);if(/^[a-z0-9]$/i.test(key)){return key;}else{key=null;}}var childNodes=node.childNodes;for(var i=0;i<childNodes.length;i++){if(key=getAccessKey(childNodes[i])){break;}}}else if(node.nodeType==3){var label=node.data.replace(/(^\s+|\s+$)/g,'');if(/_([a-z0-9])/i.test(label)){label=label.replace(/_([a-z0-9])/i,'<span style="text-decoration:underline">$1</span>');key=RegExp.$1;var span=Zapatec.Utils.createElement("span");span.innerHTML=label;var objParentNode=node.parentNode;objParentNode.insertBefore(span,node);objParentNode.removeChild(node);}}return key;};while(fc=li.firstChild){if(fc.nodeType==1&&(/^[ou]l$/i.test(fc.tagName.toLowerCase()))){if(!subtree){this.item_addIcon(item,null);var np=Zapatec.Utils.createElement("div",objContainer);np.style.position='absolute';if(!this.config.triggerEvent){np.style.left='-9999px';np.style.top='-9999px';}if(this.config.dropShadow){var ds=np.__zp_dropshadow=Zapatec.Utils.createElement('div');objContainer.insertBefore(ds,np);ds.style.position='absolute';if(!this.config.triggerEvent){ds.style.left='-9999px';ds.style.top='-9999px';}ds.style.backgroundColor='#000';if(window.opera){ds.style.backgroundColor='#666';}else{ds.style.filter='alpha(opacity='+this.config.dropShadow+')';}ds.style.opacity=this.config.dropShadow/100;}np.__zp_item=id;np.__zp_menu=Zapatec.Utils.createElement("div",np);np.__zp_menu.className='zpMenu'+(fc.className?' '+fc.className:'');np.className='zpMenuContainer';np.__zp_menu.onmouseover=Zapatec.Menu.onItemMouseOver;np.__zp_menu.onmouseout=Zapatec.Menu.onItemMouseOut;if(next_li){np.__zp_menu.className+=" zpMenu-lined";}np.__zp_icons=[];item.__zp_subtree=this.createTree(fc,np,level+1);if(np.__zp_icons.length){this.alignSubMenu(np);}np.__zp_icons=null;item.className+=" zpMenu-item-collapsed";this.toggleItem(id);if(/(^|\s)selected(\s|$)/i.test(li.className)){this.selectedItem=item;}subtree=true;}li.removeChild(fc);}else{li.removeChild(fc);if(fc.nodeType==3){var label=fc.data.replace(/(^\s+|\s+$)/g,'');if(label){var strInnerHtml=label;if(Zapatec.Menu.onDocumentKeyDown&&!accessKey){strInnerHtml=label.replace(/_([a-z0-9])/i,'<span style="text-decoration:underline">$1</span>');accessKey=RegExp.$1;}var span=Zapatec.Utils.createElement("span",td);if(strInnerHtml==label){span.appendChild(document.createTextNode(strInnerHtml));}else{span.innerHTML=strInnerHtml;}if(title)span.setAttribute('title',title);}}else if(fc.tagName){if(fc.tagName.toLowerCase()=='img'){this.item_addIcon(item,fc);has_icon=true;if(objContainer.__zp_icons instanceof Array){objContainer.__zp_icons.push(fc);}}else{if(fc.tagName.toLowerCase()=='hr'){Zapatec.Utils.addClass(item,"zpMenu-item-hr");}else if(fc.tagName.toLowerCase()=='input'&&fc.getAttribute('type')=='checkbox'){fc.onmousedown=function(ev){if(this.checked){this.checked=false;}else{this.checked=true;}return Zapatec.Utils.stopEvent(ev);};}else if(fc.tagName.toLowerCase()=='input'&&fc.getAttribute('type')=='radio'){fc.onmousedown=function(ev){this.checked=true;return Zapatec.Utils.stopEvent(ev);};}else if(fc.tagName.toLowerCase()=='a'){if(Zapatec.Menu.onDocumentKeyDown&&!accessKey){accessKey=getAccessKey(fc);}fc.tabIndex=++Zapatec.Menu.tabIndex;fc.onfocus=Zapatec.Menu.onItemMouseOver;fc.onblur=Zapatec.Menu.onItemMouseOut;}td.appendChild(fc);if(title&&!fc.getAttribute('title'))fc.setAttribute('title',title);}}}}if(accessKey){accessKey=accessKey.toUpperCase().charCodeAt(0);objContainer.__zp_keymap[accessKey]=item;}if(!has_icon&&!/zpMenu-item-hr/i.test(item.className))if(this.config.defaultIcons)this.item_addDefaultIcon(item,this.config.defaultIcons);else

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -