ft.js

来自「非常好的JAVASCRIPT树型」· JavaScript 代码 · 共 2,015 行 · 第 1/4 页

JS
2,015 行
字号
function initImage(){
addIcon(iNA,"tOF",topOpenFolderIcon)
addIcon(iNA,"tCF",topClosedFolderIcon)
addIcon(iNA,"oF",openFolderIcon)
addIcon(iNA,"cF",closedFolderIcon)
addIcon(iNA,"d",documentIcon)
addIcon(iNA,"tD",topDocumentIcon)
addIcon(iNA,"bck",backImage)
addIcon(iNAO,"tOF",topOpenFolderIconOver)
addIcon(iNAO,"tCF",topClosedFolderIconOver)
addIcon(iNAO,"oF",openFolderIconOver)
addIcon(iNAO,"cF",closedFolderIconOver)
addIcon(iNAO,"d",documentIconOver)
addIcon(iNAO,"tD",topDocumentIconOver)
addIcon(iNAO,"bck",backImageOver)
if (treeLines == 1)
{
addIcon(iTA,"mn",mnIcon)
addIcon(iTA,"pn",pnIcon)
addIcon(iTA,"pln",plnIcon)
addIcon(iTA,"mln",mlnIcon)
addIcon(iTA,"pfn",pfnIcon)
addIcon(iTA,"mfn",mfnIcon)
addIcon(iTA,"ln",lnIcon)
addIcon(iTA,"fn",fnIcon)
addIcon(iTA,"vl",vlIcon)
addIcon(iTA,"n",nIcon)
}
addIcon(iTA,"bn",bIcon)
addIcon(iTA,"b",bIcon)
addIcon(iTA,"arr",arrIcon)
addIcon(iTA,"hSpacer",hSpacerIcon)
addIcon(iTA,"vSpacer",vSpacerIcon)
}
function blank() {
icheck = 0
//alert(unscramble(99,110,98,31,60,31,114,100,107,101,45,101,113,96,108,100,114,90,108,100,109,116,69,113,96,108,100,92,45,99,110,98,116,108,100,109,115,58,96,107,100,113,115,39,38,68,117,96,107,116,96,115,104,110,109,31,85,100,113,114,104,110,109,38,40,58))
//eval(unscramble(99,110,98,31,60,31,114,100,107,101,45,101,113,96,108,100,114,90,108,100,109,116,69,113,96,108,100,92,45,99,110,98,116,108,100,109,115,58,96,107,100,113,115,39,38,68,117,96,107,116,96,115,104,110,109,31,85,100,113,114,104,110,109,38,40,58))
doc = self.frames[menuFrame].document;
ret = "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n"
ret += "<HTML><HEAD>"
ret += "<meta http-equiv=\"Content-Style-Type\" content=\"text/css\">\n"
ret += "<meta http-equiv=\"content-type\" content=\"text/html;charset=iso-8859-1\">\n"

if (styleSheetFile != "") ret += "<link rel='stylesheet' href='" + styleSheetFile + "'>"
if (!doc.layers ) ret += "<BASE HREF='" + document.location + "'>"
ret += "</HEAD><BODY " + bodyOption
if (!isOpera)
ret += " onLoad = 'parent.checkload()'"
ret += ">"
initImage()
ret += "<B><CENTER>Please wait for menu<BR>to be constructed</B><P>"
ret += "<font size=-1>Loading auxiliary bitmaps:<br>"
subret = "<img  alt='' src='"
for (var propname in iNA) 
	if (iNA[propname] != null && iNA[propname].src != "") ret += subret + iNA[propname].src + "'>"
for (var propname in iNAO) 
	if (iNAO[propname] != null && iNAO[propname].src != "") ret += subret + iNAO[propname].src + "'>"
for (var propname in iTA)
	if (iTA[propname] != null && iTA[propname].src != "") ret += subret + iTA[propname].src + "'>"
for (var propname in imageArray)
	if (imageArray[propname] != null && imageArray[propname].src != "") ret += subret + imageArray[propname].src + "'>"
ret += "<br></CENTER></BODY></HTML>"
if (isOpera) {
doc.clear()
doc.write(ret)
doc.close()
setTimeout("checkload()",200)
return ""
}
if (isNav6) doc.open()
else {
if (doc.all) doc.open("text/html","replace")
else  doc.open()
}
doc.write(ret)
if (isNav6) doc.all = doc.getElementsByTagName("*");
if (doc.all) {
setTimeout("doc.close()",400)
}
else
{
doc.close()
self.frames[menuFrame].onload = checkload
}
return ret
}
icheck = 0
function checkload() {
doc = self.frames[menuFrame].document
if (isNav6) doc.all = doc.getElementsByTagName("*");
if (isOpera) {
	operaComplete = true
	for (i=0 ; i < doc.images.length; i++) {
		if (!doc.images[i].complete) operaComplete = false
	}
}
if (!doc.all) rewritepage()
else {
   icheck++
   if ((isOpera && operaComplete) || (!isOpera && (!doc.readyState || doc.readyState == "complete"))) {
	  setTimeout("rewritepage()",200)
   }
   else {
	if (icheck > 200) {
		alert("Loading not complete")
		setTimeout("rewritepage()",200)
	}
   	else 
    	 setTimeout("checkload()",200)
   }
}
}
function unCascade2() {
 
if (!showMenu) {

collapseAll() 

showMenu = true
}
clearTimeout(cascadeOutId)
}
function unCascade() {
showMenu = false
cascadeOutId = setTimeout("unCascade2()",800)

}
function rewritepage() {
backButton = false
if (rewriting) return false;
rewriting = true
if (!fT)
{
alert("No menu structure")
rewriting = false
return false;
}
if (isNav6 || document.all)
	bV = 1
else 
	{
	if (document.layers)
		{
		bV = 2
		if (inTable || inForm) {
			if (!noFrame) bV = 0
			else {
				alert("Netscape version 4 cannot handle menu within table or form without frames")
				return false
			}

		}
		}
	else
		bV = 0
	}
if (bV == 0 && noFrame) {
	alert("Old browsers cannot use menus without frames. Please upgrade.")
}
if (bV == 1 && isMac) {
if (isMSIE && isver4Min) bV = 1
else bV = 0
}
if (isOpera) bV = 0
if (isKonq) bV = 0
if (bV == 2 ) self.onresize = self.handleResize

if (noFrame) {
doc = document
frameParent = "self"
thisFrame = self
}
else
{
thisFrame = self.frames[menuFrame]
doc = thisFrame.document
if (isNav6) doc.all = doc.getElementsByTagName("*");
if (bV == 2) {
	if (doc.width == 0)
	{
	clearTimeout(rewriteID)
	rewriteID = setTimeout("rewritepage()",1000)
	rewriting = false
	return false;
	}
}
}

chev = false
if (noFrame) chdoc = doc
else chdoc = self.frames[baseFrame].document 
if (bV > 0) { 
    if (chdoc.links.length > 0) {
    var str = new String(chdoc.links[0])
    if (str.slice(11,18) == "essence") chev = true
}
}
//alert(unscramble(104,101,39,32,98,103,100,117,40,31,96,107,100,113,115,39,38,68,117,96,107,116,96,115,104,110,109,31,85,100,113,114,104,110,109,38,40,58))

//eval(unscramble(104,101,39,32,98,103,100,117,40,31,96,107,100,113,115,39,38,68,117,96,107,116,96,115,104,110,109,31,85,100,113,114,104,110,109,38,40,58))

setStatus("Please wait for menu.")
if (bV == 1 && !isOpera) doc.open("text/html","replace")
if (bV == 0 && !isOpera) doc.open()
nEntries = 0
doc = thisFrame.document
if (isOpera) doc.clear()
if (isNav6) doc.all = doc.getElementsByTagName("*");
if (!noFrame) { 
	doc.write("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n")
	doc.write("<html><head>")
	doc.write("<meta http-equiv=\"Content-Style-Type\" content=\"text/css\">\n")
	doc.write("<meta http-equiv=\"content-type\" content=\"text/html;charset=iso-8859-1\">\n")

	if (styleSheetFile != "") doc.write("<link rel='stylesheet' href='" + styleSheetFile + "'>")
	if (bV < 2 ) doc.write("<BASE HREF='" + document.location + "'>");
	doc.write("<Title></Title></head>")
	resizestr = ""
	if (bV == 2 && !noFrame) {
		resizestr = "onResize = 'parent.handleResize(event)' "
		resizestr += " onLoad = 'parent.docLoad()' " 
		resizestr += " onUnLoad = 'parent.backLoad()' " 
	}
	doc.write("<BODY " + resizestr + bodyOption + ">")
	setStatus("Please wait for menu.")
}
initImage()
if (bV == 2) self.onresize = self.handleResize
if (bV == 1 && noFrame && cascade) self.onresize = self.handleResize
if (bV == 2) {
cascadeEvent = "" 
if (noFrame && cascade) cascadeEvent = " onMouseOut = 'return unCascade()' onMouseOver = 'showMenu = true' "
      if (noFrame && inTable) {
		doc.write("<ILAYER id = 'foldertree' visibility = 'show' top=" + topGap + " left = " + leftGap + " z-index=1>")
      } else {
		doc.write("<LAYER  " + cascadeEvent + " id = 'foldertree' visibility = 'show' top=" + topGap + " left = " + leftGap + " z-index=1 >")
      }
	doc.write("<layer id = 'header' visibility = 'hidden'>" + menuHeader + "</layer>")
	initializeDocument()
	doc.write("<layer id = 'footer' visibility = 'hidden'>" + menuFooter + "</layer>")
      if (noFrame && inTable) {
	   doc.write("</ILAYER>")
      } else {
	   doc.write("</LAYER>")
      }
} else {
        if (!rightToLeft) {
          strbufrl = ""
          strbufrl2 = "left:"

	}  else {
           strbufrl = " align = 'right' "
          strbufrl2 = "right:"
        }
	if (bV == 1 && noFrame ) {
           if (!cascade) {
		if (inTable)
			doc.write("<DIV " + strbufrl + "id='foldertree' style='position:relative;'>")
		else
			doc.write("<DIV " + strbufrl + "id='foldertree' style='position:absolute;" + strbufrl2 + leftGap + "; top:" + topGap + ";'>")
	   } else {
		doc.write("<DIV onMouseOut = 'return unCascade()' onMouseOver = 'showMenu = true' " + strbufrl + "id='foldertree' style='position:absolute;" + strbufrl2 + leftGap + "; top:" + topGap + ";z-index:4000;border-style:" + menuBorderStyle + ";border-color:" + menuBorderColor + ";border-width:2px;background-color:" + menuBackColor + "' >")
	   }
	}
	else if (bV == 1) doc.write("<DIV " + strbufrl + "id='foldertree' style='position:absolute; " + strbufrl2 + leftGap + "; top:" + topGap + ";'>")
	else doc.write("<DIV " + strbufrl + "id='foldertree'>")

	doc.write(menuHeader)
        strbufarray = new Array()
	 initializeDocument()
        if (bV == 1 && cascade && horizontal) doc.write("<table border = 0 cellspacing=0 cellpadding=0><tr>")
	if (bV == 1) eval("htmlStr = strbufarray.join('');doc.write(htmlStr);")
         if (bV == 1 && cascade && horizontal) doc.write("</tr></table>")
	doc.write(menuFooter)
if (isMac && !noFrame && isMSIE && isver4Min) doc.write("&nbsp;")
     doc.write("</DIV>")
// ? nhg line below not needed for IE win and nn6.
//	if (bV == 1 && noFrame && cascade) doc.write("<DIV>")
	if (bV == 1 && noFrame && !cascade) doc.write("</DIV>")

	}

if (!noFrame){
doc.write("</BODY></HTML>")
if (bV == 2  || (isNav6)) doc.close()
}
if (bV == 1 && noFrame)
{
doc.body.topMargin = 0
doc.body.leftMargin = 0
doc.body.rightMargin = 0
}

if (noFrame) doc = document
else
if (bV == 2) doc = self.frames[menuFrame].document
if (isNav6) doc.all = doc.getElementsByTagName("*");
if (bV == 2)
	{
	topLayer = doc.layers["foldertree"]
	doc.yPos = topLayer.layers["header"].clip.height
      doc.xPos = 0
	fT.initLayer()
	topLayer.layers["footer"].top = doc.yPos
	topLayer.clip.height = fT.navObj.clip.height + topLayer.layers["header"].clip.height + topLayer.document.layers["footer"].clip.height
if (horizontal && noFrame && cascade) topLayer.clip.width = doc.xPos
if (horizontal && noFrame && cascade) fT.navObj.clip.width = doc.xPos
	if (!(noFrame && cascade)) doc.height = topLayer.clip.height + topGap
	topLayer.layers["header"].visibility = "show"
	topLayer.layers["footer"].visibility = "show"

	topLayer.visibility = "show"
	fT.display()
	oldwinheight = thisFrame.innerHeight
	oldwinwidth = thisFrame.innerWidth
}
setStatus("")
rewriting = false
needRewrite = false
if (!noFrame)
	{
	if ((doc.all) && (!isNav6))
		setTimeout("doc.close()",200)
	else
		if (bV == 0)
			{
			doc.close()
			doc = self.frames[menuFrame].document
			}
	}
if (noFrame && cascade && leftGap < 0 && horizontal) {
if (bV == 1) treeWidth = doc.all["foldertree"].offsetWidth
if (bV == 2) treeWidth = topLayer.clip.width
if (isNav6 || bV == 2) 
docWidth = thisFrame.innerWidth
else
docWidth = doc.body.clientWidth
menuypos = Math.max(parseInt((docWidth - treeWidth)/2),0)
if (bV == 1) doc.all["foldertree"].style.left = menuypos;
if (bV == 2) topLayer.left = menuypos
}
backButton = false
return false
}
function docLoad() {
if (bV == 2) {
if (!topLayer) {setTimeout("rewritepage()",200);}
else {
if (topLayer.document.layers["node0"].visibility == "hide") {setTimeout("self.history.back()",200);}
}
}
return
}
function backLoad() {
if (!backButton) {
backButton = true
}
else {
	if (!remenu) {
	clearTimeout(rewriteID)
	rewriteID = setTimeout("self.history.back()",200)
	backButton = false
	}
}
return false;
}
function handleResize(evt) {
if (noFrame) {
if (cascade && leftGap < 0 && horizontal) {
if (bV == 1) treeWidth = doc.all["foldertree"].offsetWidth
if (bV == 2) treeWidth = topLayer.clip.width
if (isNav6 || bV == 2) 
docWidth = thisFrame.innerWidth
else
docWidth = doc.body.clientWidth
menuypos = Math.max(parseInt((docWidth - treeWidth)/2),0)
if (bV == 1) doc.all["foldertree"].style.left = menuypos;
if (bV == 2) topLayer.left = menuypos
}
locref = doc.location.href
//doc.location.replace(locref)
window.history.go(0)
return void(0)
}
backButton = false
if (rewriting) {
alert("Please do not resize window while menu is loading.\n\n Resize again to redraw menu.")
rewriting = false
return false
}
if (!needRewrite && noWrap && navigator.userAgent.indexOf("Win") != -1) 
	{
	for (i=0 ; i < nEntries; i++)
		{
		thisnode = indexOfEntries[i]
		if (thisnode.nodeImg) thisnode.nodeImg.src = thisnode.nodeTIcon()
		}
	oldwinheight = thisFrame.innerHeight
	oldwinwidth = thisFrame.innerWidth
	return false;
	}
if (evt.target.name == menuFrame)
	{
	remenu = false
	if(!(oldwinheight == evt.target.innerHeight && oldwinwidth == evt.target.innerWidth))
		{
		clearTimeout(rewriteID)
		if (topLayer) topLayer.clip.height = 0
		rewriteID = setTimeout("rewritepage()",500)
		rewriting = false
		remenu = true
		}
	}
else
	{
	if(!(oldtopheight == evt.target.innerHeight && oldtopwidth == evt.target.innerWidth))
		{
		if (!remenu){
			clearTimeout(rewriteID)
			rewriteID = setTimeout("rewritepage()",500)
			rewriting = false
		}
		oldtopheight = evt.target.innerHeight
		oldtopwidth = evt.target.innerWidth
		}
	remenu = false
	}
return false;
}

// Global variables
// ****************
indexOfEntries = new Array()
var nEntries = 0
var selectedNode = 0
var bV = 0
var javaerror = false
var needRewrite = true
var backButton = false
var doc = document
var oldwinheight = 0
var oldwinwidth = 0
var oldtopheight = 0
var oldtopwidth = 0
cascadeHeight = 0
cascadeWidth = 0
var topLayer
levelDefFont = new Array()
var remenu = false
var firstInitial = true
top.defaultStatus = "";
iNA = new Object()
iNAO = new Object()
iTA = new Object()
imageArray = new Object()
var nImageArray = 0
timeoutID = 0
timeoutIDOver = 0
cascadeOutId = 0
rewriteID = 0
rewriting = false
frameParent = "parent"
thisFrame = self
fT = 0
addToTree = 0
clickAction = 0
isNav6 = false
if (navigator.userAgent.indexOf("Netscape6") >= 0)
   isNav6 = true;
if (navigator.userAgent.indexOf("Gecko") >= 0)
   isNav6 = true;
isOpera = false
if (navigator.userAgent.indexOf("Opera") >= 0)
   isOpera = true;
isver4Min = false
isver4Min = (parseInt(navigator.appVersion) >= 4)
isMac = false
if (navigator.userAgent.indexOf("Mac") >= 0)
   isMac = true;
isMSIE = false
if (navigator.userAgent.indexOf("MSIE") >= 0)
   isMSIE = true;
isKonq = false
if (navigator.userAgent.indexOf("Konqueror") >= 0)
     isKonq = true;
rightToLeft = false;
showMenu = false;
pnIcon = "ftpn.gif";
mnIcon = "ftmn.gif";
pfnIcon = "ftpfn.gif";
mfnIcon = "ftmfn.gif";
plnIcon = "ftpln.gif";
mlnIcon = "ftmln.gif";
bnIcon = "ftbn.gif";
nIcon = "ftn.gif";
fnIcon = "ftfn.gif";
lnIcon = "ftln.gif";
bIcon = "ftb.gif";
vlIcon = "ftvl.gif";


⌨️ 快捷键说明

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