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

📄 mtmcode.js

📁 一个jsp开发的web mail项目。经典示例
💻 JS
📖 第 1 页 / 共 3 页
字号:
// Morten's JavaScript Tree Menu
// version 2.3.2-macfriendly, dated 2002-06-10
// http://www.treemenu.com/

// Copyright (c) 2001-2002, Morten Wang & contributors
// All rights reserved.

// This software is released under the BSD License which should accompany
// it in the file "COPYING".  If you do not have this file you can access
// the license through the WWW at http://www.treemenu.com/license.txt

/******************************************************************************
* Define the MenuItem object.                                                 *
******************************************************************************/
function MTMenuItem(text, url, target, tooltip, icon, openIcon) {
	this.text = text;
	this.url = url ? url : "";
	this.target =  target ? target : (MTMDefaultTarget ? MTMDefaultTarget : "");
	this.tooltip = tooltip;
	this.icon = icon ? icon : "";
	this.openIcon = openIcon ? openIcon : ""; // used for addSubItem

	this.number = MTMNumber++;

	this.parentNode  = null;
	this.submenu     = null;
	this.expanded    = false;
	this.MTMakeSubmenu = MTMakeSubmenu;
	this.makeSubmenu = MTMakeSubmenu;
	this.addSubItem = MTMAddSubItem;
	MTMLastItem = this;
}

function MTMakeSubmenu(menu, isExpanded, collapseIcon, expandIcon) {
	this.submenu = menu;
	this.expanded = isExpanded;
	this.collapseIcon = collapseIcon ? collapseIcon : "menu_folder_closed.gif";
	this.expandIcon = expandIcon ? expandIcon : "menu_folder_open.gif";

	var i;
	for(i = 0; i < this.submenu.items.length; i++) {
		this.submenu.items[i].parentNode = this;
		if(this.submenu.items[i].expanded) {
			this.expanded = true;
		}
	}
}

function MTMakeLastSubmenu(menu, isExpanded, collapseIcon, expandIcon) {
	this.items[this.items.length-1].makeSubmenu(menu, isExpanded, collapseIcon, expandIcon);
}

function MTMAddSubItem(item) {
	if(this.submenu == null){
		this.MTMakeSubmenu(new MTMenu(), false, this.icon, this.openIcon);
	}
	this.submenu.MTMAddItem(item);
}

/******************************************************************************
* Define the Menu object.                                                     *
******************************************************************************/

function MTMenu() {
	this.items   = new Array();
	this.MTMAddItem = MTMAddItem;
	this.addItem = MTMAddItem;
	this.makeLastSubmenu = MTMakeLastSubmenu;
}

function MTMAddItem() {
	if(arguments[0].toString().indexOf("[object Object]") != -1) {
		this.items[this.items.length] = arguments[0];
	} else {
		this.items[this.items.length] = new MTMenuItem(arguments[0], arguments[1], arguments[2], arguments[3], arguments[4]);
	}
}

/******************************************************************************
* Define the icon list, addIcon function and MTMIcon item.                    *
******************************************************************************/

function IconList() {
	this.items = new Array();
	this.addIcon = addIcon;
}

function addIcon(item) {
	this.items[this.items.length] = item;
}

function MTMIcon(iconfile, match, type) {
	this.file = iconfile;
	this.match = match;
	this.type = type;
}

/******************************************************************************
* Define the stylesheet rules objects and methods.                            *
******************************************************************************/

function MTMstyleRuleSet() {
	this.rules = new Array();
	this.addRule = MTMaddStyleRule;
}

function MTMaddStyleRule(thisSelector, thisStyle) {
	this.rules[this.rules.length] = new MTMstyleRule(thisSelector, thisStyle);
}

function MTMstyleRule(thisSelector, thisStyle) {
	this.selector = thisSelector;
	this.style = thisStyle;
}

/******************************************************************************
* The MTMBrowser object.  A custom "user agent" that'll define the browser    *
* seen from the menu's point of view.                                         *
******************************************************************************/

function MTMBrowser() {
	// default properties and values
	this.cookieEnabled = false;
	this.preHREF = "";
	this.MTMable = false;
	this.cssEnabled = true;
	this.browserType = "other";
	this.majVersion = null;
	this.DOMable = null;

	// properties concerning output document
	this.menuFrame = null;
	this.document = null;
	this.head = null;
	this.menuTable = null;

	// methods
	this.setDocument = MTMsetDocument;
	this.getFrames = MTMgetFrames;
	this.appendElement = MTMappendElement;
	this.resolveURL = MTMresolveURL;

	if(navigator.userAgent.indexOf("Opera") != -1) {
		if(navigator.appName == "Opera") {
			this.majVersion = parseInt(navigator.appVersion);
		} else {
			this.majVersion = parseInt(navigator.userAgent.substring(navigator.userAgent.indexOf("Opera")+6));
		}
		if(this.majVersion >= 5) {
			this.MTMable = true;
			this.browserType = "O";
		}
	} else if(navigator.appName == "Netscape" && navigator.userAgent.indexOf("WebTV") == -1) {
		this.MTMable = true;
		this.browserType = "NN";
		if(parseInt(navigator.appVersion) == 3) {
			this.majVersion = 3;
			this.cssEnabled = false;
		} else if(parseInt(navigator.appVersion) >= 4) {
			this.majVersion = parseInt(navigator.appVersion) == 4 ? 4 : 5;
			if(this.majVersion >= 5) {
				this.DOMable = true;
			}
		}
	} else if(navigator.appName == "Microsoft Internet Explorer" && parseInt(navigator.appVersion) >= 4) {
		this.MTMable = true;
		if(navigator.userAgent.toLowerCase().indexOf("mac") != -1) {
			this.browserType = "NN";
			this.majVersion = 4;
			this.DOMable = false;
		} else {
			this.browserType = "IE";
			this.majVersion = navigator.appVersion.indexOf("MSIE 6.") != -1 ? 6 : (navigator.appVersion.indexOf("MSIE 5.") != -1 ? 5 : 4);
			if(this.majVersion >= 5) {
				this.DOMable = true;
			}
		}
	}
	this.preHREF = location.href.substring(0, location.href.lastIndexOf("/") +1)
}

function MTMsetDocument(menuFrame) {
	// called by function MTMgetFrames and sets
	// properties .menuFrame and .document, and for DOMable browsers also .head
	this.menuFrame = menuFrame;
	this.document = menuFrame.document;

	if(this.DOMable) {
		this.head = this.browserType == "IE" ? this.document.all.tags('head')[0] : this.document.getElementsByTagName('head').item(0);
	}
}
/****************************************
  add by qiuchun to split every javascript function in link
 功能:分隔出链接中每个JS函数,并加上引用前缀 
 作者: 仇春
*****************************/
function MTMSplitFunc(thisURL){
   var strTmp = thisURL;
   //将javascript:去掉
   strTmp = strTmp.substring(11,strTmp.length);
   var prefix = "parent.frames['" + MTMCodeFrame + "'].";
   var sary = strTmp.split(";");
   var tempString  = "";
   for(var x=0;x< sary.length;x++){
      if (sary[x]!="")
         tempString += prefix + sary[x]+";"; 
   }
   return "javascript:" + tempString;
}

function MTMresolveURL(thisURL, testLocal) {
	// resolves 'thisURL' against this.preHREF depending on whether it's an absolute
	// or relative URL.  if 'testLocal' is set it'll return true for local (relative) URLs.
	var absoluteArray = new Array("http://", "https://", "mailto:", "ftp://", "telnet:", "news:", "gopher:", "nntp:", "javascript:", "file:");

	var tempString = "", i;
	for(i = 0; i < absoluteArray.length; i++) {
		if(thisURL.indexOf(absoluteArray[i]) == 0) {
		//javascript is especial
		    if (thisURL.indexOf("javascript:") == 0) {
			    tempString = MTMSplitFunc(thisURL);
			} else {
			    tempString = thisURL;
			}
			break;
		}
	}
	if(testLocal) {
		return(tempString == "" ? true : false);
	}

	if(!tempString) {
		if(thisURL.indexOf("/") == 0) {
			tempString = location.protocol + "//" + location.hostname + thisURL;
		} else if(thisURL.indexOf("../") == 0) {
			tempString = this.preHREF;
			do {
				thisURL = thisURL.substr(3);
				tempString = tempString.substr(0, tempString.lastIndexOf("/", tempString.length-2) +1);
			} while(thisURL.indexOf("../") == 0);
			tempString += thisURL;
		} else {
			tempString = this.preHREF + thisURL;
		}
	}
	return(tempString);
}

/******************************************************************************
* Default values of all user-configurable options.                            *
******************************************************************************/

var MTMLinkedJSURL, MTMLinkedSS, MTMSSHREF, MTMLinkedInitFunction, MTMDOCTYPE, MTMcontentType, MTMHeader, MTMFooter, MTMrightClickMessage, MTMDefaultTarget, MTMTimeOut = 5;
var MTMuseScrollbarCSS, MTMscrollbarBaseColor, MTMscrollbarFaceColor, MTMscrollbarHighlightColor, MTMscrollbarShadowColor, MTMscrollbar3dLightColor, MTMscrollbarArrowColor, MTMscrollbarTrackColor, MTMscrollbarDarkShadowColor;
var MTMUseCookies, MTMCookieName, MTMCookieDays, MTMTrackedCookieName;
var MTMCodeFrame = "code", MTMenuFrame = "menu", MTMTableWidth = "100%", MTMenuImageDirectory = "menu-images/";
var MTMUseToolTips = true, MTMEmulateWE, MTMAlwaysLinkIfWE = true, MTMSubsGetPlus = "Submenu", MTMSubsAutoClose;
var MTMBackground = "", MTMBGColor = "#ffffff", MTMTextColor = "#000000", MTMLinkColor = "#330099", MTMTrackColor = "#000000", MTMAhoverColor = "#990000", MTMSubExpandColor = "#666699", MTMSubClosedColor = "#666699", MTMSubTextColor = "#000000" ,MTMSelectedItemColor = "";
var MTMenuText = "", MTMRootIcon = "menu_new_root.gif", MTMRootColor = "#000000";
var MTMRootFont = MTMenuFont = "Arial, Helvetica, sans-serif";
var MTMRootCSSize = MTMenuCSSize = "84%";
var MTMRootFontSize = MTMenuFontSize = "-1";



/******************************************************************************
* Global variables.  Not to be altered unless you know what you're doing.     *
* User-configurable options are found in code.html                            *
******************************************************************************/

var MTMLoaded = false;
var MTMLevel;
var MTMBar = new Array();
var MTMIndices = new Array();

var MTMUA = new MTMBrowser();

var MTMExtraCSS = new MTMstyleRuleSet();
var MTMstyleRules;

var MTMLastItem; // last item added to a menu
var MTMClickedItem = false;
var MTMExpansion = false;
var MTMPreviousClickItem = null;
var MTMNumber = 1;
var MTMTrackedItem;
var MTMTrack = false;
var MTMFrameNames;

var MTMFirstRun = true;
var MTMCurrentTime = 0;
var MTMUpdating = false;
var MTMWinSize, MTMyval, MTMxval;
var MTMOutputString = "";

var MTMCookieString = "";
var MTMCookieCharNum = 0;
var MTMTCArray, MTMTrackedCookie;

/******************************************************************************
* Code that picks up frame names of frames in the parent frameset.            *
******************************************************************************/

function MTMgetFrames() {
	if(this.MTMable) {
		MTMFrameNames = new Array();
		for(i = 0; i < parent.frames.length; i++) {
			MTMFrameNames[i] = parent.frames[i].name;
			if(parent.frames[i].name == MTMenuFrame) {
				this.setDocument(parent.frames[i]);
			}
		}
	}
}

/******************************************************************************
* Functions to draw the menu.                                                 *
******************************************************************************/

function MTMSubAction(SubItem) {

	SubItem.expanded = (SubItem.expanded) ? false : true;
	if(SubItem.expanded) {
		MTMExpansion = true;
	}

	MTMClickedItem = SubItem;

	if(MTMTrackedItem && MTMTrackedItem != SubItem.number) {
		MTMTrackedItem = false;
	}

	if(MTMEmulateWE || SubItem.url == "" || !SubItem.expanded) {
		setTimeout("MTMDisplayMenu()", 10);
		return false;

⌨️ 快捷键说明

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