📄 whthost.js
字号:
var sPath=getPath(whichIm.src); sPath=_getFullPath(sPath,getBookImage(nId,true)); whichIm.src=sPath; } if(gbMac&&gbIE5){ this.parent.document.getElementById("tocIFrame").style.width="101%"; this.parent.document.getElementById("tocIFrame").style.width="100%"; } } return oDiv;}function getChunkId(n){ var nCan=-1; for(var i=0;i<gaTocs.length;i++) if(gaTocs[i].nMI<=n&&gaTocs[i].nMI!=-1) { if(nCan==-1) nCan=i; else if(gaTocs[i].nMI>=gaTocs[nCan].nMI) nCan=i; } if(nCan!=-1) return nCan; else return -1;}function getChunk(n){ if(gnCC!=-1&&gaTocs[gnCC].nMI<=n&&(gnCC==gaTocs.length-1|| gaTocs[gnCC+1].nMI>n)) { return gaTocs[gnCC]; } else{ gnCC=getChunkId(n); if(gnCC!=-1) return gaTocs[gnCC]; else return null; }}function getBookImage(nIdx,bClosed){ var nIdx=bClosed?0:1; var sIcon=getItemIcon(nIdx,nIdx); if(sIcon=="") if(bClosed) sIcon=giBookClose; else sIcon=giBookOpen; return _getFullPath(gaProj[0].sPPath,sIcon);}function getItemImage(nIdx,bRemote){ var sIcon=getItemIcon(nIdx,0); if(sIcon=="") if(bRemote) sIcon=giURLItem; else sIcon=giBookItem; return _getFullPath(gaProj[0].sPPath,sIcon);}function getInnerText2(obj){ var sText=getInnerText(obj); if(sText.length>0&&!gbOpera7) sText=sText.substring(1); return sText;}function expandToc(oObj,sRest,aIdList){ var len=aIdList.length; var nPos=sRest.indexOf(gsPathSplit); if(nPos!=-1) { sPart=sRest.substring(0,nPos); sRest=sRest.substring(nPos+1); } else { sPart=sRest; var aTagAs=getItemsByBook(oObj); for(var s=0;s<aTagAs.length;s++) { var sText=getInnerText2(aTagAs[s]); if(sText==sPart) { aIdList[len]=aTagAs[s]; return 1; } } return 0; } var aChildren=getChildrenByTag(oObj,"DIV"); for(var i=0;i<aChildren.length;i++) { var sPId=aChildren[i].id; if(!isPBId(sPId)) continue; var sText=getInnerText2(aChildren[i]); if(sText!=sPart) continue; aIdList[len]=getIdByPBId(sPId); var sCId=getCBId(aIdList[len]); var oCObj=getElement(sCId); if(oCObj) { if(oCObj.innerHTML=="") { var obj=getItemsByBook(aChildren[i]); if(obj.length>0) { if(gbNav6) { var sCommand=obj[0].getAttribute("onClick"); var nCommand=sCommand.indexOf(";"); sCommand=sCommand.substring(0,nCommand); setTimeout(sCommand,1); } else obj[0].click(); } return -1; } var nRet=expandToc(oCObj,sRest,aIdList); if(nRet) return nRet; } } aIdList.length=len; return 0;}function getIdByPBId(sPId){ return parseInt(sPId.substring(2,sPId.length-1));}function getIdByCBId(sCId){ return parseInt(sCId.substring(2,sCId.length-1));}function isPBId(sId){ return (sId&&sId.indexOf("B_")==0&&sId.lastIndexOf("P")==sId.length-1);}function isCBId(sId){ return (sId&&sId.indexOf("B_")==0&&sId.lastIndexOf("C")==sId.length-1);}function getBId(nIdx){ return "B_"+nIdx;}function getPBId(nIdx){ return getBId(nIdx)+"P";}function getCBId(nIdx){ return getBId(nIdx)+"C";}function getClosestTocPath(aPaths){ var nMaxSimilarity=0; var nThatIndex=-1; var sPath=null; if(aPaths.length==0) return sPath; for(var i=0;i<aPaths.length;i++) { var nSimilarity=comparePath(gsCTPath,aPaths[i]); if(nSimilarity>nMaxSimilarity) { nMaxSimilarity=nSimilarity; nThatIndex=i; } } if(nThatIndex!=-1) sPath=aPaths[nThatIndex]; else sPath=aPaths[0]; return sPath;}function comparePath(sPath1,sPath2){ var nMaxSimilarity=0; var nStartPos1=0; var nPos1=-1; var nStartPos2=0; var nPos2=-1; do{ var sCheck1=null; var sCheck2=null; nPos1=sPath1.indexOf(gsPathSplit,nStartPos1); if(nPos1!=-1) { sCheck1=sPath1.substring(nStartPos1,nPos1); nStartPos1=nPos1+1; } else { sCheck1=sPath1.substring(nStartPos1); nStartPos1=-1; } nPos2=sPath2.indexOf(gsPathSplit,nStartPos2); if(nPos1!=-1) { sCheck2=sPath2.substring(nStartPos2,nPos2); nStartPos2=nPos2+1; } else { sCheck2=sPath2.substring(nStartPos2); nStartPos2=-1; } if(sCheck1==sCheck2) nMaxSimilarity++; else break; }while(nStartPos1!=-1&&nStartPos2!=-1); return nMaxSimilarity;}function getTocPaths(oTopicParam){ var aRelTocPaths=oTopicParam.aPaths; var aPaths=new Array(); for(var i=0;i<gaProj.length;i++) if(isSamePath(gaProj[i].sPPath,oTopicParam.sPPath)) { for(var j=0;j<aRelTocPaths.length;j++) for (var k=0;k<gaRoot[i].aRPath.length;k++) { var sPath=gaRoot[i].aRPath[k]+aRelTocPaths[j]; aPaths[aPaths.length]=sPath.substring(1); } break; } return aPaths;}function syncInit(){ if(gsTP&&!gbNeedFillStub) { gInSync=true; var obj=document.body; var aIdList=new Array(); var nRet=expandToc(obj,gsTP,aIdList); if(nRet!=-1) { if(nRet==1) { if(aIdList.length) for(var i=0;i<aIdList.length-1;i++) ExpandIt2(aIdList[i],true); gsCTPath=gsTP; if(!gbIE55) aIdList[aIdList.length-1].focus(); else HighLightElement(aIdList[aIdList.length-1],gsABgColor,"transparent"); } var aPaths=gaBTPs; gsTP=null; gaBTPs=null; if(aPaths!=null) { var sPath=getClosestTocPath(aPaths); if(sPath!=null) { gsTP=sPath; setTimeout("syncInit()",1); } } } gInSync=false; }}function loadToc(){ if(!gbLoadToc) { var oResMsg=new whMessage(WH_MSG_GETPROJINFO,this,1,null); if(SendMessage(oResMsg)&&oResMsg.oParam) { gbLoadToc=true; var oProj=oResMsg.oParam; gaProj=oProj.aProj; gbXML=oProj.bXML; load1B1(); } }}function load1B1(){ if(gnLT+1<gaProj.length) for(var i=gnLT+1;i<gaProj.length;i++) if(gaProj[i].sToc) { gbToc=true; gnLT=i; setTimeout("loadTocInfo()",1); return true; } return false;}function loadTocInfo(){ loadData2(gaProj[gnLT].sPPath+gaProj[gnLT].sDPath+gaProj[gnLT].sToc);}function loadData2(sFile){ if(gbXML) loadDataXML(sFile); else loadData(sFile);}function projReady(sRoot,aProj){ if(gaRoot.length<=gnLT||!gaRoot[gnLT]) gaRoot[gnLT]=new Object(); gaRoot[gnLT].sToc=sRoot; if(gnLT==0) { gaRoot[gnLT].aRPath=new Array(); gaRoot[gnLT].aRPath[0]=gsPathSplit; } updatePTPath(gnLT,aProj); if(!((gnLT+1<gaProj.length)&&load1B1())) { gbReady=true; if(gbIE4) setTimeout("loadImages();",1); else setTimeout("loadTData();",1); }}function loadTData(){ if(gaProj[0].sToc!="") { gbLData=true; goChunk=addTocChunk(gaProj[0].sPPath,gaProj[0].sDPath); gbToc=false; loadData2(gaProj[0].sPPath+gaProj[0].sDPath+gaRoot[0].sToc); }}function updatePTPath(n,aProj){ if(aProj) for(var i=0;i<aProj.length;i++) { var sFullPath=_getFullPath(gaProj[n].sPPath,aProj[i].sPPath); for(var j=0;j<gaProj.length;j++) if(isSamePath(sFullPath,gaProj[j].sPPath)) { if(gaRoot.length<=j||!gaRoot[j]) gaRoot[j]=new Object(); if(!gaRoot[j].aRPath) gaRoot[j].aRPath=new Array(); if(gaRoot[n].aRPath) for(var k=0;k<gaRoot[n].aRPath.length;k++) { var bDup=false; var sTFPath=gaRoot[n].aRPath[k]+aProj[i].sRPath; for(var l=0;l<gaRoot[j].aRPath.length;l++) if(gaRoot[j].aRPath[l]==sTFPath) { bDup=true; break; } if(!bDup) gaRoot[j].aRPath[gaRoot[j].aRPath.length]=sTFPath; } else gaRoot[j].aRPath[gaRoot[j].aRPath.length]=aProj[i].sRPath; break; } }}function onLoadXMLError(){ if(gbToc) { var sRoot=""; var aRProj=new Array(); projReady(sRoot,aRProj); } else { var aToc=new Array(); putData(aToc) }}function putDataXML(xmlDoc,sDocPath){ if(gbToc) { var tocNode=xmlDoc.getElementsByTagName("toc")[0]; if(tocNode) { var sRoot=tocNode.getAttribute("root"); var rmtProject=tocNode.getElementsByTagName("project"); var aRProj=new Array(); if(rmtProject.length>0) { for(var i=0;i<rmtProject.length;i++) { aRProj[i]=new Object(); var sURL=rmtProject[i].getAttribute("url"); if(sURL) { if(sURL.lastIndexOf("/")!=sURL.length-1) sURL+="/"; } aRProj[i].sPPath=sURL; aRProj[i].sRPath = ""; var oSubPath = rmtProject[i].getElementsByTagName("subpath")[0]; if (oSubPath) { while (oSubPath) { aRProj[i].sRPath += oSubPath.getAttribute("name") + "\n"; oSubPath = oSubPath.getElementsByTagName("subpath")[0]; } } else aRProj[i].sRPath=rmtProject[i].getAttribute("path"); } } projReady(sRoot,aRProj); } } else { var chunkNode=xmlDoc.getElementsByTagName("tocdata")[0]; if(chunkNode) { var aToc=new Array(); processBook(chunkNode,aToc); putData(aToc); } }}function processBook(node,aToc){ var i=0; var entry=null; var prevEntry=null; var oChild=node.firstChild; do{ if(oChild) { if(oChild.nodeName.indexOf("#")!=0) { var sName=oChild.getAttribute("name"); var sURL=oChild.getAttribute("url"); var sRef=oChild.getAttribute("ref"); var sTarget=oChild.getAttribute("target"); var sIcons=oChild.getAttribute("images"); var item=new Object(); item.sItemName=sName; if(sTarget) item.sTarget=sTarget; if(sIcons) item.sIconRef=sIcons; if(sURL==null) sURL=""; item.sItemURL=sURL; if(oChild.nodeName=="book") { item.nType=1; aToc[aToc.length]=item; var nCurrPos=aToc.length; processBook(oChild,aToc); item.nContents=aToc.length-nCurrPos; } else if(oChild.nodeName=="item") { item.nType=2; item.nContents=0; aToc[aToc.length]=item; } else if(oChild.nodeName=="remoteitem") { item.nType=16; item.nContents=0; aToc[aToc.length]=item; } else if(oChild.nodeName=="project") { if(sRef) { if(sRef.lastIndexOf("/")!=sRef.length-1) sRef+="/"; } item.nType=4; item.sRefURL=sRef; item.nContents=0; aToc[aToc.length]=item; } else if(oChild.nodeName=="chunk") { item.nType=8; item.sRefURL=sRef; item.nContents=0; aToc[aToc.length]=item; } } } else break; oChild=oChild.nextSibling; }while(true);}function putData(aTocs){ gaTocsNs61Fix=aTocs; setTimeout("realPutData();",1);}function realPutData(){ removeLoadingDiv(); var aTocs=gaTocsNs61Fix; if(!aTocs) return; if(goChunk) { var n=gnMinIdx; goChunk.nMI=gnMinIdx; goChunk.aTocs=aTocs; gnMinIdx+=aTocs.length; if(gnInsIdx!=-1) { var oObj=getElement(getPBId(gnInsIdx)); if(oObj) { oObj.insertAdjacentHTML("afterEnd",writeBookItems(n-1,aTocs.length)); setTimeout("syncInit()",1); } } else{ document.body.insertAdjacentHTML("beforeEnd",writeBookItems(n-1,aTocs.length)); var oParam=new Object(); oParam.oTocInfo=null; var oMsg=new whMessage(WH_MSG_GETTOCPATHS,this,1,oParam); if(SendMessage(oMsg)) { if(oMsg.oParam.oTocInfo) syncWithPaths(oMsg.oParam.oTocInfo); } } } gbLData=false; checkFillStub();}function syncWithPaths(oTopicParam){ var aPaths=getTocPaths(oTopicParam); if(gsTP) gaBTPs=aPaths; else{ var sPath=getClosestTocPath(aPaths); if(sPath!=null) { gsTP=sPath; setTimeout("syncInit()",1); } }}function window_OnLoad(){ if(gsBgImage&&gsBgImage.length>0) { document.body.background=gsBgImage; } if(gsBgColor&&gsBgColor.length>0) { document.body.bgColor=gsBgColor; } loadToc(); var oMsg=new whMessage(WH_MSG_SHOWTOC,this,1,null) SendMessage(oMsg);}function loadImages(){ if(giBookClose) { gaImgs[gnImages]=giBookClose; gnImages++; } if(giBookOpen) { gaImgs[gnImages]=giBookOpen; gnImages++; } if(giBookItem) { gaImgs[gnImages]=giBookItem; gnImages++; } if(giURLItem) { gaImgs[gnImages]=giURLItem; gnImages++; } if(giNewBookClose) { gaImgs[gnImages]=giNewBookClose; gnImages++; } if(giNewBookOpen) { gaImgs[gnImages]=giNewBookOpen; gnImages++; } if(giNewBookItem) { gaImgs[gnImages]=giNewBookItem; gnImages++; } if(giNewURLItem) { gaImgs[gnImages]=giNewURLItem; gnImages++; } if(gnImages>0) { setTimeout("loadDataAfter();",1000); loadImage(gaImgs[0]); } else loadDataAfter();}function loadImage(sURL){ var oImg=new Image(); oImg.onload=checkImageLoading; oImg.onerror=errorImageLoading; oImg.src=_getFullPath(gaProj[0].sPPath,sURL);}function loadDataAfter(){ if(!gbLoadData) { gbLoadData=true; loadTData(); }}function errorImageLoading(){ gnLoadedImages++; if(gnImages==gnLoadedImages) loadDataAfter(); else loadImage(gaImgs[gnLoadedImages]); }function checkImageLoading(){ gnLoadedImages++; if(gnImages==gnLoadedImages) loadDataAfter(); else loadImage(gaImgs[gnLoadedImages]); }function window_unload(){ UnRegisterListener2(this,WH_MSG_PROJECTREADY); UnRegisterListener2(this,WH_MSG_SYNCTOC); UnRegisterListener2(this,WH_MSG_SHOWTOC);}function onSendMessage(oMsg){ if(oMsg) { var nMsgId=oMsg.nMessageId; if(nMsgId==WH_MSG_PROJECTREADY) { loadToc(); } else if(nMsgId==WH_MSG_SYNCTOC) { if(gbReady) { syncWithPaths(oMsg.oParam); } } else if(nMsgId==WH_MSG_SHOWTOC) { if(!gbNav6) document.body.focus(); } } return true;}if(window.gbWhUtil&&window.gbWhVer&&window.gbWhMsg&&window.gbWhProxy){ RegisterListener2(this,WH_MSG_PROJECTREADY); RegisterListener2(this,WH_MSG_SYNCTOC); RegisterListener2(this,WH_MSG_SHOWTOC); goFont=new whFont("Verdana","8pt","#000000","normal","normal","none"); goHFont=new whFont("Verdana","8pt","#007f00","normal","normal","underline"); window.onload=window_OnLoad; window.onbeforeunload=window_BUnload; window.onunload=window_unload; gbWhTHost=true;}else document.location.reload();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -