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(" ")
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 + -
显示快捷键?