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

📄 spmenu.js

📁 如果不使用IIS,请先运行 XSP.exe,待提示已侦听 8080端口后
💻 JS
📖 第 1 页 / 共 5 页
字号:
			oCell = document.createElement('TD');		
			oCell.id = 'up' + oMenu.id.substring(3);
			oCell.colSpan = 3;
			oCell.align = 'center';
			oCell.style.backgroundColor = 'gray';	//can be overridden by MenuScroll style
			oCell.innerHTML='<div id="up' + oMenu.id.substr(3) + '" onclick="return spm_ScrollMenuClick(this, event);" onmouseover="spm_ScrollMenuMO(this, m_oSolpartMenu[\'' + me._m_sNSpace + '\']);" onmouseout="spm_ScrollMenuMOUT(m_oSolpartMenu[\'' + me._m_sNSpace + '\']);" class="' + spm_fixCSSForMac(me.getIntCSSName('spmitmscr')) + ' ' + me.cssMenuScrollItem + '" style="width: 100%; font-size: 6pt;">...</div>';
			oRow.style.display = 'none';
			oRow.appendChild(oCell);
		}	

		if (oMenu.ScrollRowHeight == null)
		{
			spm_getTags('tr', oTbl)[0].style.display = '';
			oMenu.ScrollItemHeight = (spm_getElementHeight(spm_getTags('tr', oTbl)[0]) * 2);
			spm_getTags('tr', oTbl)[0].style.display = 'none';

			oMenu.ScrollRowHeight = spm_getElementHeight(spm_getTags('tr', oTbl)[1]);
		}

		oMenu.scrollItems = parseInt((spm_getViewPortHeight() - spm_elementTop(oMenu) + spm_getBodyScrollTop() - oMenu.ScrollItemHeight) / (oMenu.ScrollRowHeight + 1));
		spm_showScrolledItems(oMenu);

	}
		
	function spm_ScrollMenuMO(e, me)
	{
		me._m_dHideTimer = null;
		me._m_oScrollingMenu = e;
		if (Number(me.moScroll))
			setTimeout('m_oSolpartMenu["' + me._m_sNSpace + '"].scrollMenu()', 500);

	}
	
	function spm_ScrollMenuMOUT(me)
	{
		me._m_oScrollingMenu = null;

		me._m_dHideTimer = new Date();
		if (me.moutDelay != 0)
		  setTimeout('m_oSolpartMenu["' + me._m_sNSpace + '"].hideMenuTime()', me.moutDelay);
		

	}
	
	function spm_ScrollMenuClick(e, evt)
	{		
		if (e != null)
		{	
			var oCell = e.parentNode;
			var oTbl = oCell.parentNode.parentNode.parentNode;
			var oMenu = oTbl.parentNode;

			if (oCell.id == 'up' + oMenu.id.substring(3))
			{
				if (oMenu.scrollPos > 1)
					oMenu.scrollPos--;					
				else
					return true;
			}
			else 
			{
				if (oMenu.scrollPos + oMenu.scrollItems < oTbl.rows.length - 1)
					oMenu.scrollPos++;
				else
					return true;
			}
				
			spm_showScrolledItems(oMenu);
			if (evt != null)
				spm_stopEventBubbling(evt);
		}
		return false;
	}

	function spm_showScrolledItems(oMenu)
	{
		var oTbl = spm_getTags('table', oMenu)[0];
		var oRows = spm_getTags('tr', oTbl);	//oTbl.rows.length
		
		for (var i=1; i < oRows.length; i++)	
		{
			//if row is not within display "window" then don't display it
			if (i < oMenu.scrollPos || i >= oMenu.scrollPos + oMenu.scrollItems)
				oRows[i].style.display = 'none';
			else
				oRows[i].style.display = '';			
		}
		
		// if we are scrolled down at least one then display up scroll item
		if (oMenu.scrollPos > 1)
			oRows[0].style.display = '';
		else
			oRows[0].style.display = 'none';
		
		
		// if there is at least one item not displayed then show down item
		if (oMenu.scrollPos + oMenu.scrollItems < oTbl.rows.length - 1)
			oRows[oRows.length-1].style.display = '';
		else
			oRows[oRows.length-1].style.display = 'none';
			
	}

	function spm_insertTableRow(tbl, iPos)
	{
		var oRow;
		var oTB;
		oRow = document.createElement('TR');
		if (tbl.getElementsByTagName('TBODY').length == 0)
		{
			oTB = document.createElement('TBODY');
			tbl.appendChild(oTB);
		}
		else
			oTB = tbl.getElementsByTagName('TBODY')[0];

		if (iPos == null)
			oTB.appendChild(oRow);
		else
			oTB.insertBefore(oRow, tbl.rows[iPos]);
		return oRow;
	
	}

	function spm_getElementHeight(o)
	{	
		if (o.offsetHeight == null || o.offsetHeight == 0)
		{
			if (o.offsetParent.offsetHeight == null || o.offsetParent.offsetHeight == 0)
			{
				if (o.offsetParent.offsetParent != null)
					return o.offsetParent.offsetParent.offsetHeight; //needed for Konqueror
				else
					return 0;
			}
			else
				return o.offsetParent.offsetHeight;
		}
		else
			return o.offsetHeight;
	}

	function spm_getElementWidth(o)
	{
		if (o.offsetWidth == null || o.offsetWidth == 0)
		{
			if (o.offsetParent.offsetWidth == null || o.offsetParent.offsetWidth == 0)
			{
				if (o.offsetParent.offsetParent != null)
					return o.offsetParent.offsetParent.offsetWidth; //needed for Konqueror
				else
					return 0;
			}
			else
				return o.offsetParent.offsetWidth

		}
		else
			return o.offsetWidth;
	}
	
	//viewport logic taken from http://dhtmlkitchen.com/js/measurements/index.jsp
	function spm_getViewPortWidth()
	{
		// supported in Mozilla, Opera, and Safari
    if(window.innerWidth)
			return window.innerWidth;
    // supported in standards mode of IE, but not in any other mode
    if(window.document.documentElement.clientWidth)
			return document.documentElement.clientWidth;
	
    // supported in quirks mode, older versions of IE, and mac IE (anything else).
    return window.document.body.clientWidth;
	}
	
  function spm_getBodyScrollTop()
  {
		if (window.pageYOffset)
			return window.pageYOffset;
		
		var oBody = (document.compatMode && document.compatMode != "BackCompat") ? document.documentElement : document.body;		
		return oBody.scrollTop;
  }

  function spm_getBodyScrollLeft(bOverride)
  { 
		if (window.pageXOffset)
			return window.pageXOffset;

		var oBody = (document.compatMode && document.compatMode != "BackCompat") ? document.documentElement : document.body;
		return oBody.scrollLeft;
  }
	
	function spm_getViewPortHeight()
	{
		// supported in Mozilla, Opera, and Safari
    if(window.innerHeight)
			return window.innerHeight;
    // supported in standards mode of IE, but not in any other mode
    if(window.document.documentElement.clientHeight)
			return document.documentElement.clientHeight;
	
    // supported in quirks mode, older versions of IE, and mac IE (anything else).
    return window.document.body.clientHeight;
	}
		
	function spm_elementTop(eSrc, includeBody)
	{
		
		var iTop = 0;
		var eParent;
		eParent = eSrc;

		while (eParent.tagName.toUpperCase() != "BODY")
		{

			//Safari incorrectly calculates the TR tag to be at the top of the table, so try and get child TD tag to use for measurement
			//if (spm_browserType() == 'safari' && eParent.tagName.toUpperCase() == 'TR' && spm_getTags('TD', eParent).length)
			//	eParent = spm_getTags('TD', eParent)[0];

			iTop += eParent.offsetTop;
			
			eParent = eParent.offsetParent;
			if (eParent == null)
				break;
		}
		if (includeBody != null && eParent != null && (spm_browserType() == 'safari' || spm_browserType() == 'kq')) 
			iTop += eParent.offsetTop;
		
		return iTop;
	}


	function spm_elementLeft(eSrc, includeBody)
	{	
		var iLeft = 0;
		var eParent;
		eParent = eSrc;
		while (eParent.tagName.toUpperCase() != "BODY")
		{

			iLeft += eParent.offsetLeft;
				
			eParent = eParent.offsetParent;
			if (eParent == null)
				break;
		}
		if (includeBody != null && eParent != null && (spm_browserType() == 'safari' || spm_browserType() == 'kq'))
			iLeft += eParent.offsetLeft;

		
		return iLeft;
	}
	
	function spm_getElement(e, sID) 
	{
		var o=e;
		var i=0;
		while (o.id != sID)
		{
			o=o.parentNode;
			i++;
		}
		return o;
	}

	function spm_getSourceTR(e, ns)
	{
		while (e.id == "")
		{
			e= e.parentElement;
		}
		if (e.id.indexOf("arrow") != -1)
		{
			var sID = e.id.substr(5);
			return spm_getById("tr" + sID);
		}
		else if (e.id.indexOf("td") != -1)
		{
			var sID = e.id.substr(2);
			return spm_getById("tr" + sID);
		}	
		else if (e.id.indexOf("icon") != -1)
		{
			var sID = e.id.substr(4);
			return spm_getById("tr" + sID);
		}	
		else if (e.id.indexOf("img") != -1)
		{
			var sID = e.id.substr(3);
			return spm_getById("tr" + sID);
		}	
		else
		{
			return e;
		}
	}

	function spm_itemHasChildren(sID, ns)
	{
		return spm_getById("tbl" + sID) != null;
	}

function spm_getMenuItemStyle(sType, oNode)
{
  return spm_getAttr(oNode, sType + "style", '');
}

function spm_getMenuItemCSS(oNode)
{
  return spm_getAttr(oNode, "css", '');
}

function spm_getMenuItemSelCSS(oNode)
{
  return spm_getAttr(oNode, "selcss", '');
}

SolpartMenu.prototype.getIntCSSName =  function(sClass)
{
  var ary = sClass.split(' ');
  var s='';
  for (var i=0; i<ary.length; i++)
    s += this._m_sNSpace.toLowerCase() + '_' + ary[i] + ' ';
  
  return s;
}

function spm_fixCSSForMac(s)
{
	var ary = s.split(' ');
	var sRet='';
	for (var i=0; i<ary.length; i++)
	{
		if (ary[i].rtrim().length > 0)
		{
			if (sRet.length)
				sRet += ' ' + ary[i];
			else
				sRet = ary[i];
		}
	}
	return sRet;
}

function spm_getMenuClickAction(oNode, me)
{
  //'function to determine if menu item has action associated (URL)
  var sName = spm_getAttr(me._m_oMenu, 'name', me._m_oMenu.name);

  if (sName == null || sName.length == 0)	//opera fix for getting name
		sName = spm_getAttr(me._m_oMenu, 'pbname', me._m_oMenu.pbname);
 	
  if (spm_getAttr(oNode, "runat", '').length)
    return "__doPostBack('" + sName + "', '" + spm_getAttr(oNode, "id", "") + "');";
  if (spm_getAttr(oNode, "server", '').length)
    return "__doPostBack('" + sName + "', '" + spm_getAttr(oNode, "id", "") + "');";
  var sURL = spm_getAttr(oNode, "url", "");
  if (sURL.length)
	{
		if (sURL.toLowerCase().substr(0, "javascript:".length) == "javascript:")
			return sURL.substr("javascript:".length) + ";";
		else
		{
			if (me.target.length > 0 && document.frames[me.target] != null)
				return "document.frames['" + me.target + "'].location.href='" + sURL + "';";
			else
				return "document.location.href='" + sURL + "';";
		}
	}
	return '';
	
}

function spm_getMenuSpacingImage(sPos, me)
{
  var sAlign = me.menuAlignment.toLowerCase();

  if ((sPos == 'left' && sAlign == 'right') || (sPos == 'right' && sAlign == 'left'))
		return "       <td width=\"100%\">" + spm_getSpacer(me) + "</td>";

  if ((sPos == 'right' && sAlign == 'left') || (sPos == 'left' && sAlign == 'right'))
		return "       <td width=\"3px\">" + spm_getSpacer(me) + "</td>";

	if (sAlign == 'Center')
		return "       <td width=\"33%\">" + spm_getSpacer(me) + "</td>";
	
	return '';   
}

function spm_getSpacer(me) 
{
  return spm_getMenuImage('spacer.gif', me, false, ' ');
    //return '&nbsp;'; //"<IMG SRC=\"" + me.systemImagesPath + "spacer.gif\">";
}

function spm_getImage(oAttr, me)
{
  //'retrieves an image for a passed in XMLAttribute
  var sImage = spm_getAttr(oAttr, 'image', '');

  if (sImage.length)
  {
    return spm_getHTMLImage(sImage, spm_getAttr(oAttr, 'imagepath', me.iconImagesPath), null, spm_getAttr(oAttr, 'title', ''));
  }
  else

⌨️ 快捷键说明

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