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

📄 deeptree.htc

📁 通过实例讲述了如何运用脚本语言解析XML文档。
💻 HTC
📖 第 1 页 / 共 3 页
字号:
<public:component>
<public:attach event="oncontentready" onevent="Init()" />
<public:attach event="onclick" onevent="Click()" />
<public:attach event="onmousedown" onevent="MouseDown()" />
<public:attach event="onmouseover" onevent="MouseOver()" />
<public:attach event="onmouseout" onevent="MouseOut()" />
<public:attach event="onmouseup" onevent="MouseUp()" />
<public:attach event="onselectstart" onevent="SelectStart()" />

<public:method name="movenext" />
<public:method name="moveprevious" />
<public:method name="Sync" />

<script language="JScript">

var objLI_Current = null;
var strRootPath = "";

var oConfig = null;

var strXSLSrc = "/library/shared/deeptree/xsl/deeptree.xsl";  
objXSLDoc = new ActiveXObject("Microsoft.XMLDOM");
objXSLDoc.async = false;
objXSLDoc.load( strXSLSrc );

if (objXSLDoc.xml == "")
{
	var objXslXMLHttp = new ActiveXObject("MSXML2.XMLHTTP");
	objXslXMLHttp.open( "GET", strXSLSrc, false );
	objXslXMLHttp.send();
	
	objXSLDoc.loadXML( objXslXMLHttp.responseXml.xml );
}

var m_iMaxCalls = 1024;
var m_aoCalls   = new Array();
var m_iLastCall = 0;
var m_iMasterIdx = null;
var m_bSyncFailed = false;

var m_sTempNodeStart = "<div class='clsItem' type='leaf'><span class='clsSpace' type='img'><span class='clsLeaf'>.</span></span><span class='clsLabel' type='label'><span class='clsUnavailable'>";
var m_sTempNodeEnd = "</span></span></div>";

var m_sUnavailableText = "Unavailable";
var m_sLoadingText = "Loading...";



//-----------------------------------------------
// GetXML(strXMLSrc, strXSLsrc)
//-----------------------------------------------

function GetXML( strXMLSrc , oEl , oElClass , oSync )
{
    var aryXMLNodes;
    var i = 0;
    var strRetVal = "";
    
    var iCall = fnAllocCall();
    var objXMLDoc = new ActiveXObject("Microsoft.XMLDOM");
    objXMLDoc.async = true;
    m_aoCalls[iCall] = new CallObject( objXMLDoc , oEl , oElClass , oSync , strXMLSrc);
    
    objXMLDoc.onreadystatechange = Function( "fnLoadComplete( " + iCall + " );" );
    
    objXMLDoc.load( strXMLSrc );
    
    return iCall;
}

//-------------------------------------------------------------------------------------------------
//                                     EVENT HANDLERS
//-------------------------------------------------------------------------------------------------

//-----------------------------------------------
// Init()
//-----------------------------------------------

function Init()
{
    var strHTML;
    var objLI;
    
    // Set up global tree accessors.
    //   TODO:: check that these have not been overridden by 
    //          another consuming application.
    //   TODO:: encapsulate global accessors in other functionality 
    //          as well (dtbar,searchtab,contentbar should set themselves, 
    //          rather than doing it here)
    
    window.top.deeptree = element;
    window.top.dtbar = top.frames.fraLeftFrame.frames.fraDTBar;
    window.top.contentbar = top.frames.fraRightFrame.frames.fraContentBar;
    window.top.content = top.frames.fraRightFrame.frames.fraContent;
    window.top.searchtab = top.frames.fraLeftFrame.frames.fraSearchTab;
    window.top.leftframe = top.frames.fraLeftFrame;
    window.top.rightframe = top.frames.fraRightFrame;
    window.top.mainframeset = top.document.all.fstMain;
    
    oConfig = new Config

	element.type = "container";
	
    m_iMasterIdx = GetXML( oConfig.sTopXmlSrc , element , "deeptree" );

    window.document.body.attachEvent("onkeydown",KeyDown);
}

//-----------------------------------------------
// Click()
//-----------------------------------------------

function Click()
{
	var objUnknown;
	var objLI;

	objUnknown = window.event.srcElement;

	window.event.cancelBubble = true;
	window.event.returnValue = false;
	window.document.body.focus();
 	if( objUnknown.tagName.toUpperCase() == "A" )
	{  
		objLI = objUnknown.parentElement.parentElement;
		SelectNode(objLI, false, false);
		ToggleNode(objLI);
    }
    else if( null != objUnknown.parentElement && objUnknown.parentElement.type == "img" )
    {
    	objLI = objUnknown.parentElement.parentElement;
		if ( objLI.type == "leaf" )
		{
			SelectNode( objLI, false, false );
		}
		else
		{
			ToggleNode(objLI);
		}
	
    }
    else if( objUnknown.type == "img" )
    {
		objLI = objUnknown.parentElement;
		if ( objLI.type == "leaf" )
		{
			SelectNode( objLI, false, false );
		}
		else
		{
			ToggleNode(objLI);
		}
	}
	else if( objUnknown.type == "label" )
	{
		objLI = objUnknown.parentElement;
		SelectNode(objLI, false, false );
		ToggleNode(objLI);
	}
	else
	{
		SelectNode(objLI_Current, true, false);
	}
	return false;
}

//-----------------------------------------------
// KeyDown()
//-----------------------------------------------

function KeyDown()
  {
  var blnRetVal = false
  var objLI;

  if (window.event.ctrlKey == false && window.event.altKey == false)
    {

    window.event.cancelBubble = true;
    window.event.returnValue = false;

    switch (window.event.keyCode)
      {

      case 9 : // tab key
        if (window.event.shiftKey == true)
          {
          MovePrevious();
          }
        else
          {
          MoveNext();
          }
        break;

      case 13 : // enter key
        objLI = window.event.srcElement.parentElement;
        LoadNodeContent(objLI);
        break;

      case 37 : // left key
        MoveLeft()
        break;

      case 38 : // up key
        MoveUp()
        break;

      case 39 : // right key
        MoveRight()
        break;

      case 40 : // down key
        MoveDown()
        break;
          
      case 188 : // "<" key
        MovePrevious();
        break;

      case 190 : // ">" key
        MoveNext();
        break;

      default :
        window.event.cancelBubble = false;
        window.event.returnValue = true;
        blnRetVal = true;
        break;
      }
    }
  else
    {
    window.event.cancelBubble = false;
    window.event.returnValue = true;
    blnRetVal = true;
    }
      
  return blnRetVal;
  }

//-----------------------------------------------
// MouseDown()
//-----------------------------------------------

function MouseDown()
{
	var objUnknown;

	objUnknown = window.event.srcElement;

	if (objUnknown.tagName.toUpperCase() == "A")
	{
		objUnknown = objUnknown.parentElement;
	}

	if (objUnknown.type == "label")
	{
		objUnknown.className = 'clsMouseDown';
	}
	return true;
}

//-----------------------------------------------
// MouseOut()
//-----------------------------------------------

function MouseOut()
{
	var objUnknown;
	var objLI;
	var i = 0;

	objUnknown = window.event.srcElement;

	if (objUnknown.tagName.toUpperCase() == "A")
	{
		objUnknown = objUnknown.parentElement;
	}

	if (objUnknown.type == "label" )
	{
		objUnknown.className = objUnknown.classType;
	}
	return true;
}

//-----------------------------------------------
// MouseOver()
//-----------------------------------------------

function MouseOver()
{
	var objUnknown;
	var strStatus;

	objUnknown = window.event.srcElement;

	if (objUnknown.tagName.toUpperCase() == "A")
	{
		objUnknown = objUnknown.parentElement;
	}

	if (objUnknown.type == "label")
	{
		objUnknown.className = 'clsMouseOver';
	}

	return true;
}

//-----------------------------------------------
// MouseUp()
//-----------------------------------------------

function MouseUp()
{
	var objUnknown;
	var objLI;
	var i = 0;

	objUnknown = window.event.srcElement;

	if (objUnknown.tagName.toUpperCase() == "A")
	{
		objUnknown = objUnknown.parentElement;
	}

	if (objUnknown.type == "label")
	{
		objUnknown.className = 'clsMouseOver';
	}
	return true;
}

//-----------------------------------------------
// SelectStart()
//-----------------------------------------------

function SelectStart()
{
	window.event.cancelBubble = true;
	window.event.returnValue = false;
	return false;
}

//-------------------------------------------------------------------------------------------------
//                                     PUBLIC METHODS
//-------------------------------------------------------------------------------------------------

//-----------------------------------------------
// MoveNext()
//-----------------------------------------------

function MoveNext()
{
	var objLI_Temp;
	var objLI_New;
	if( null == objLI_Current ) objLI_Current = GetHtmlElement( element , "div" );
	
	if( null == objLI_Current ) return;
	
	if ( objLI_Current.state == "shown")
	{
		objLI_New = GetFirstChild(objLI_Current);
		if (objLI_New != null)
		{
			SelectNode(objLI_New, false, true);
		}
	}
	else
	{
		if (objLI_Current.type != "leaf" )
		{
			var bLoad = ExpandNode(objLI_Current);
			if( bLoad )
			{
				objLI_Current.selectChild = true;
			}
			else
			{
				objLI_New = GetFirstChild(objLI_Current);
				if (objLI_New != null)
				{
					SelectNode(objLI_New, false, true);
				}
			}		
		}
		else
		{
			objLI_Temp = objLI_Current;
			objLI_New = GetNextSibling(objLI_Temp);
			while (objLI_New == null)
			{
				objLI_Temp = GetParent(objLI_Temp);
				if (objLI_Temp == null)
				{
					objLI_New = objLI_Current;
				}
				else
				{
					objLI_New = GetNextSibling(objLI_Temp);
				}
			}
			SelectNode(objLI_New, false, true);
		}
	}
}

//-----------------------------------------------
// MovePrevious()
//-----------------------------------------------

function MovePrevious()
{
	if( null == objLI_Current ) return;
	if( null == objLI_Current ) objLI_Current = GetHtmlElement( element , "div" );
	
	var objLI_New;
	objLI_New = GetPreviousSibling(objLI_Current);

	if (objLI_New != null)
	{
		SelectNode(objLI_New, false, true);
	}
	else
	{
		objLI_New = GetParent(objLI_Current);
		if (objLI_New != null)
		{
			SelectNode(objLI_New, false, true);
		}
	}
}

//-----------------------------------------------
// MoveLeft()
//-----------------------------------------------

function MoveLeft()
{
	var objLI_New;
	

⌨️ 快捷键说明

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