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

📄 menu.js

📁 原名JSPackager
💻 JS
📖 第 1 页 / 共 4 页
字号:
this.mouseOverEvent = new CustomEvent("mouseOverEvent", this);this.mouseOutEvent = new CustomEvent("mouseOutEvent", this);this.mouseDownEvent = new CustomEvent("mouseDownEvent", this);this.mouseUpEvent = new CustomEvent("mouseUpEvent", this);this.clickEvent = new CustomEvent("clickEvent", this);this.keyPressEvent = new CustomEvent("keyPressEvent", this);this.keyDownEvent = new CustomEvent("keyDownEvent", this);this.keyUpEvent = new CustomEvent("keyUpEvent", this);this.focusEvent = new CustomEvent("focusEvent", this);this.blurEvent = new CustomEvent("blurEvent", this);if (p_oConfig) {oConfig.applyConfig(p_oConfig);}oConfig.fireQueue();}}, _getFirstElement:function (p_oElement, p_sTagName) {var oElement;if (p_oElement.firstChild && p_oElement.firstChild.nodeType == 1) {oElement = p_oElement.firstChild;} else {if (p_oElement.firstChild && p_oElement.firstChild.nextSibling && p_oElement.firstChild.nextSibling.nodeType == 1) {oElement = p_oElement.firstChild.nextSibling;}}if (p_sTagName) {return (oElement && oElement.tagName == p_sTagName) ? oElement : false;}return oElement;}, _checkString:function (p_oObject) {return (typeof p_oObject == "string");}, _checkDOMNode:function (p_oObject) {return (p_oObject && p_oObject.tagName);}, _createRootNodeStructure:function () {this.element = document.createElement("li");this._oText = document.createTextNode("");this._oAnchor = document.createElement("a");this._oAnchor.appendChild(this._oText);this.cfg.refireEvent("url");this.element.appendChild(this._oAnchor);}, _initSubTree:function () {var Menu = this.SUBMENU_TYPE;var MenuModuleItem = this.SUBMENU_ITEM_TYPE;var oSrcEl = this.srcElement;var oConfig = this.cfg;if (oSrcEl.childNodes.length > 0) {var oNode = oSrcEl.firstChild;var aOptions = [];do {switch (oNode.tagName) {case "DIV":oConfig.setProperty("submenu", (new Menu(oNode)));break;case "OPTION":aOptions[aOptions.length] = oNode;break;}} while ((oNode = oNode.nextSibling));var nOptions = aOptions.length;if (nOptions > 0) {oConfig.setProperty("submenu", (new Menu(this._oDom.generateId())));for (var n = 0; n < nOptions; n++) {this._oSubmenu.addItem((new MenuModuleItem(aOptions[n])));}}}}, configText:function (p_sType, p_aArgs, p_oItem) {var sText = p_aArgs[0];if (this._oText) {this._oText.nodeValue = sText;}}, configHelpText:function (p_sType, p_aArgs, p_oItem) {var me = this;var Dom = this._oDom;var oHelpText = p_aArgs[0];var oEl = this.element;var oConfig = this.cfg;var aNodes = [oEl, this._oAnchor];var oImg = this.submenuIndicator;function initHelpText() {Dom.addClass(aNodes, "hashelptext");if (oConfig.getProperty("disabled")) {oConfig.refireEvent("disabled");}if (oConfig.getProperty("selected")) {oConfig.refireEvent("selected");}}function removeHelpText() {Dom.removeClass(aNodes, "hashelptext");oEl.removeChild(me._oHelpTextEM);me._oHelpTextEM = null;}if (this._checkDOMNode(oHelpText)) {if (this._oHelpTextEM) {this._oHelpTextEM.parentNode.replaceChild(oHelpText, this._oHelpTextEM);} else {this._oHelpTextEM = oHelpText;oEl.insertBefore(this._oHelpTextEM, oImg);}initHelpText();} else {if (this._checkString(oHelpText)) {if (oHelpText.length === 0) {removeHelpText();} else {if (!this._oHelpTextEM) {this._oHelpTextEM = document.createElement("em");oEl.insertBefore(this._oHelpTextEM, oImg);}this._oHelpTextEM.innerHTML = oHelpText;initHelpText();}} else {if (!oHelpText && this._oHelpTextEM) {removeHelpText();}}}}, configURL:function (p_sType, p_aArgs, p_oItem) {var sURL = p_aArgs[0];if (!sURL) {sURL = "#";}this._oAnchor.setAttribute("href", sURL);}, configEmphasis:function (p_sType, p_aArgs, p_oItem) {var bEmphasis = p_aArgs[0];var oAnchor = this._oAnchor;var oText = this._oText;var oConfig = this.cfg;var oEM;if (bEmphasis && oConfig.getProperty("strongemphasis")) {oConfig.setProperty("strongemphasis", false);}if (oAnchor) {if (bEmphasis) {oEM = document.createElement("em");oEM.appendChild(oText);oAnchor.appendChild(oEM);} else {oEM = this._getFirstElement(oAnchor, "EM");oAnchor.removeChild(oEM);oAnchor.appendChild(oText);}}}, configStrongEmphasis:function (p_sType, p_aArgs, p_oItem) {var bStrongEmphasis = p_aArgs[0];var oAnchor = this._oAnchor;var oText = this._oText;var oConfig = this.cfg;var oStrong;if (bStrongEmphasis && oConfig.getProperty("emphasis")) {oConfig.setProperty("emphasis", false);}if (oAnchor) {if (bStrongEmphasis) {oStrong = document.createElement("strong");oStrong.appendChild(oText);oAnchor.appendChild(oStrong);} else {oStrong = this._getFirstElement(oAnchor, "STRONG");oAnchor.removeChild(oStrong);oAnchor.appendChild(oText);}}}, configDisabled:function (p_sType, p_aArgs, p_oItem) {var bDisabled = p_aArgs[0];var Dom = this._oDom;var oAnchor = this._oAnchor;var aNodes = [this.element, oAnchor];var oEM = this._oHelpTextEM;var oConfig = this.cfg;var oImg = this.submenuIndicator;var sImageSrc;var sImageAlt;if (oEM) {aNodes[2] = oEM;}if (bDisabled) {if (oConfig.getProperty("selected")) {oConfig.setProperty("selected", false);}oAnchor.removeAttribute("href");Dom.addClass(aNodes, "disabled");sImageSrc = this.DISABLED_SUBMENU_INDICATOR_IMAGE_PATH;sImageAlt = this.DISABLED_SUBMENU_INDICATOR_ALT_TEXT;} else {oAnchor.setAttribute("href", oConfig.getProperty("url"));Dom.removeClass(aNodes, "disabled");sImageSrc = this.SUBMENU_INDICATOR_IMAGE_PATH;sImageAlt = this.COLLAPSED_SUBMENU_INDICATOR_ALT_TEXT;}if (oImg) {oImg.src = this.imageRoot + sImageSrc;oImg.alt = sImageAlt;}}, configSelected:function (p_sType, p_aArgs, p_oItem) {if (!this.cfg.getProperty("disabled")) {var Dom = this._oDom;var bSelected = p_aArgs[0];var oEM = this._oHelpTextEM;var aNodes = [this.element, this._oAnchor];var oImg = this.submenuIndicator;var sImageSrc;if (oEM) {aNodes[2] = oEM;}if (bSelected) {Dom.addClass(aNodes, "selected");sImageSrc = this.SELECTED_SUBMENU_INDICATOR_IMAGE_PATH;} else {Dom.removeClass(aNodes, "selected");sImageSrc = this.SUBMENU_INDICATOR_IMAGE_PATH;}if (oImg) {oImg.src = document.images[(this.imageRoot + sImageSrc)].src;}}}, configSubmenu:function (p_sType, p_aArgs, p_oItem) {var Dom = this._oDom;var oEl = this.element;var oSubmenu = p_aArgs[0];var oImg = this.submenuIndicator;var oConfig = this.cfg;var aNodes = [this.element, this._oAnchor];if (oSubmenu) {oSubmenu.parent = this;this._oSubmenu = oSubmenu;if (!oImg) {var me = this;function preloadImage(p_sPath) {var sPath = me.imageRoot + p_sPath;if (!document.images[sPath]) {var oImg = document.createElement("img");oImg.src = sPath;oImg.name = sPath;oImg.id = sPath;oImg.style.display = "none";document.body.appendChild(oImg);}}preloadImage(this.SUBMENU_INDICATOR_IMAGE_PATH);preloadImage(this.SELECTED_SUBMENU_INDICATOR_IMAGE_PATH);preloadImage(this.DISABLED_SUBMENU_INDICATOR_IMAGE_PATH);oImg = document.createElement("img");oImg.src = (this.imageRoot + this.SUBMENU_INDICATOR_IMAGE_PATH);oImg.alt = this.COLLAPSED_SUBMENU_INDICATOR_ALT_TEXT;oEl.appendChild(oImg);this.submenuIndicator = oImg;Dom.addClass(aNodes, "hassubmenu");if (oConfig.getProperty("disabled")) {oConfig.refireEvent("disabled");}if (oConfig.getProperty("selected")) {oConfig.refireEvent("selected");}}} else {Dom.removeClass(aNodes, "hassubmenu");if (oImg) {oEl.removeChild(oImg);}if (this._oSubmenu) {this._oSubmenu.destroy();}}}, initDefaultConfig:function () {var oConfig = this.cfg;var CheckBoolean = oConfig.checkBoolean;oConfig.addProperty("text", {value:"", handler:this.configText, validator:this._checkString, suppressEvent:true});oConfig.addProperty("helptext", {handler:this.configHelpText});oConfig.addProperty("url", {value:"#", handler:this.configURL, suppressEvent:true});oConfig.addProperty("emphasis", {value:false, handler:this.configEmphasis, validator:CheckBoolean, suppressEvent:true});oConfig.addProperty("strongemphasis", {value:false, handler:this.configStrongEmphasis, validator:CheckBoolean, suppressEvent:true});oConfig.addProperty("disabled", {value:false, handler:this.configDisabled, validator:CheckBoolean, suppressEvent:true});oConfig.addProperty("selected", {value:false, handler:this.configSelected, validator:CheckBoolean, suppressEvent:true});oConfig.addProperty("submenu", {handler:this.configSubmenu});}, getNextEnabledSibling:function () {if (this.parent instanceof YAHOO.widget.MenuModule) {var nGroupIndex = this.groupIndex;function getNextArrayItem(p_aArray, p_nStartIndex) {return p_aArray[p_nStartIndex] || getNextArrayItem(p_aArray, (p_nStartIndex + 1));}var aItemGroups = this.parent.getItemGroups();var oNextItem;if (this.index < (aItemGroups[nGroupIndex].length - 1)) {oNextItem = getNextArrayItem(aItemGroups[nGroupIndex], (this.index + 1));} else {var nNextGroupIndex;if (nGroupIndex < (aItemGroups.length - 1)) {nNextGroupIndex = nGroupIndex + 1;} else {nNextGroupIndex = 0;}var aNextGroup = getNextArrayItem(aItemGroups, nNextGroupIndex);oNextItem = getNextArrayItem(aNextGroup, 0);}return oNextItem.cfg.getProperty("disabled") ? oNextItem.getNextEnabledSibling() : oNextItem;}}, getPreviousEnabledSibling:function () {if (this.parent instanceof YAHOO.widget.MenuModule) {var nGroupIndex = this.groupIndex;function getPreviousArrayItem(p_aArray, p_nStartIndex) {return p_aArray[p_nStartIndex] || getPreviousArrayItem(p_aArray, (p_nStartIndex - 1));}function getFirstItemIndex(p_aArray, p_nStartIndex) {return p_aArray[p_nStartIndex] ? p_nStartIndex : getFirstItemIndex(p_aArray, (p_nStartIndex + 1));}var aItemGroups = this.parent.getItemGroups();var oPreviousItem;if (this.index > getFirstItemIndex(aItemGroups[nGroupIndex], 0)) {oPreviousItem = getPreviousArrayItem(aItemGroups[nGroupIndex], (this.index - 1));} else {var nPreviousGroupIndex;if (nGroupIndex > getFirstItemIndex(aItemGroups, 0)) {nPreviousGroupIndex = nGroupIndex - 1;} else {nPreviousGroupIndex = aItemGroups.length - 1;}var aPreviousGroup = getPreviousArrayItem(aItemGroups, nPreviousGroupIndex);oPreviousItem = getPreviousArrayItem(aPreviousGroup, (aPreviousGroup.length - 1));}return oPreviousItem.cfg.getProperty("disabled") ? oPreviousItem.getPreviousEnabledSibling() : oPreviousItem;}}, focus:function () {var oParent = this.parent;var oAnchor = this._oAnchor;var oActiveItem = oParent.activeItem;if (!this.cfg.getProperty("disabled") && oParent && oParent.cfg.getProperty("visible")) {if (oActiveItem) {oActiveItem.blur();}oAnchor.focus();if (oParent && this.browser == "opera" && this._oSubmenu) {oAnchor.focus();}this.focusEvent.fire();}}, blur:function () {var oParent = this.parent;if (!this.cfg.getProperty("disabled") && oParent && this._oDom.getStyle(oParent.element, "visibility") == "visible") {this._oAnchor.blur();this.blurEvent.fire();}}, destroy:function () {var oEl = this.element;if (oEl) {this.mouseOverEvent.unsubscribeAll();this.mouseOutEvent.unsubscribeAll();this.mouseDownEvent.unsubscribeAll();this.mouseUpEvent.unsubscribeAll();this.clickEvent.unsubscribeAll();this.keyPressEvent.unsubscribeAll();this.keyDownEvent.unsubscribeAll();this.keyUpEvent.unsubscribeAll();this.focusEvent.unsubscribeAll();this.blurEvent.unsubscribeAll();this.cfg.configChangedEvent.unsubscribeAll();var oParentNode = oEl.parentNode;if (oParentNode) {oParentNode.removeChild(oEl);this.destroyEvent.fire();}this.destroyEvent.unsubscribeAll();}}};YAHOO.widget.Menu = function (p_oElement, p_oConfig) {YAHOO.widget.Menu.superclass.constructor.call(this, p_oElement, p_oConfig);};YAHOO.extend(YAHOO.widget.Menu, YAHOO.widget.MenuModule);YAHOO.widget.Menu.prototype.init = function (p_oElement, p_oConfig) {if (!this.ITEM_TYPE) {this.ITEM_TYPE = YAHOO.widget.MenuItem;}YAHOO.widget.Menu.superclass.init.call(this, p_oElement);this.beforeInitEvent.fire(YAHOO.widget.Menu);this.showEvent.subscribe(this._onMenuShow, this, true);this.mouseOverEvent.subscribe(this._onMenuMouseOver, this, true);this.keyDownEvent.subscribe(this._onMenuKeyDown, this, true);if (p_oConfig) {this.cfg.applyConfig(p_oConfig, true);}this.initEvent.fire(YAHOO.widget.Menu);};YAHOO.widget.Menu.prototype._onMenuShow = function (p_sType, p_aArgs, p_oMenu) {var oParent = this.parent;if (oParent && oParent.parent instanceof YAHOO.widget.Menu) {var aAlignment = oParent.parent.cfg.getProperty("submenualignment");this.cfg.setProperty("submenualignment", [aAlignment[0], aAlignment[1]]);}};YAHOO.widget.Menu.prototype._onMenuMouseOver = function (p_sType, p_aArgs, p_oMenu) {if (this.parent) {this.parent.cfg.setProperty("selected", true);}};YAHOO.widget.Menu.prototype._onMenuKeyDown = function (p_sType, p_aArgs, p_oMenu) {if (this.cfg.getProperty("position") == "dynamic") {var oDOMEvent = p_aArgs[0];var oParent = this.parent;if (oDOMEvent.keyCode == 27) {this.hide();if (oParent) {oParent.focus();if (oParent.parent instanceof YAHOO.widget.Menu) {oParent.cfg.setProperty("selected", true);}YAHOO.util.Event.preventDefault(oDOMEvent);}}}};YAHOO.widget.Menu.prototype.onDomResize = function (e, obj) {if (!this._handleResize) {this._handleResize = true;return;}var me = this;var oConfig = this.cfg;if (oConfig.getProperty("position") == "dynamic") {oConfig.setProperty("width", (this._getOffsetWidth() + "px"));if (this.parent && oConfig.getProperty("visible")) {function align() {me.align();}window.setTimeout(align, 0);}}YAHOO.widget.Menu.superclass.onDomResize.call(this, e, obj);};YAHOO.widget.MenuItem = function (p_oObject, p_oConfig) {YAHOO.widget.MenuItem.superclass.constructor.call(this, p_oObject, p_oConfig);

⌨️ 快捷键说明

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