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

📄 wz_tooltip.js

📁 Tooltips javascript very very simple but very beatiful
💻 JS
📖 第 1 页 / 共 3 页
字号:
{	if(!tt_op)		return;	if(tt_elDeHref)		tt_OpReHref();	while(el)	{		if(el.hasAttribute && el.hasAttribute("href"))		{			el.t_href = el.getAttribute("href");			el.t_stats = window.status;			el.removeAttribute("href");			el.style.cursor = "hand";			tt_AddEvtFnc(el, "mousedown", tt_OpReHref);			window.status = el.t_href;			tt_elDeHref = el;			break;		}		el = tt_GetDad(el);	}}function tt_OpReHref(){	if(tt_elDeHref)	{		tt_elDeHref.setAttribute("href", tt_elDeHref.t_href);		tt_RemEvtFnc(tt_elDeHref, "mousedown", tt_OpReHref);		window.status = tt_elDeHref.t_stats;		tt_elDeHref = null;	}}function tt_El2Tip(){	var css = tt_t2t.style;	// Store previous positioning	tt_t2t.t_cp = css.position;	tt_t2t.t_cl = css.left;	tt_t2t.t_ct = css.top;	tt_t2t.t_cd = css.display;	// Store the tag's parent element so we can restore that DOM branch	// when the tooltip is being hidden	tt_t2tDad = tt_GetDad(tt_t2t);	tt_MovDomNode(tt_t2t, tt_t2tDad, tt_aElt[6]);	css.display = "block";	css.position = "static";	css.left = css.top = css.marginLeft = css.marginTop = "0px";}function tt_UnEl2Tip(){	// Restore positioning and display	var css = tt_t2t.style;	css.display = tt_t2t.t_cd;	tt_MovDomNode(tt_t2t, tt_GetDad(tt_t2t), tt_t2tDad);	css.position = tt_t2t.t_cp;	css.left = tt_t2t.t_cl;	css.top = tt_t2t.t_ct;	tt_t2tDad = null;}function tt_OverInit(){	if(window.event)		tt_over = window.event.target || window.event.srcElement;	else		tt_over = tt_ovr_;	tt_DeAlt(tt_over);	tt_OpDeHref(tt_over);}function tt_ShowInit(){	tt_tShow.Timer("tt_Show()", tt_aV[DELAY], true);	if(tt_aV[CLICKCLOSE] || tt_aV[CLICKSTICKY])		tt_AddEvtFnc(document, "mouseup", tt_OnLClick);}function tt_Show(){	var css = tt_aElt[0].style;	// Override the z-index of the topmost wz_dragdrop.js D&D item	css.zIndex = Math.max((window.dd && dd.z) ? (dd.z + 2) : 0, 1010);	if(tt_aV[STICKY] || !tt_aV[FOLLOWMOUSE])		tt_iState &= ~0x4;	if(tt_aV[EXCLUSIVE])		tt_iState |= 0x8;	if(tt_aV[DURATION] > 0)		tt_tDurt.Timer("tt_HideInit()", tt_aV[DURATION], true);	tt_ExtCallFncs(0, "Show")	css.visibility = "visible";	tt_iState |= 0x2;	if(tt_aV[FADEIN])		tt_Fade(0, 0, tt_aV[OPACITY], Math.round(tt_aV[FADEIN] / tt_aV[FADEINTERVAL]));	tt_ShowIfrm();}function tt_ShowIfrm(){	if(tt_ie56)	{		var ifrm = tt_aElt[tt_aElt.length - 1];		if(ifrm)		{			var css = ifrm.style;			css.zIndex = tt_aElt[0].style.zIndex - 1;			css.display = "block";		}	}}function tt_Move(e){	if(e)		tt_ovr_ = e.target || e.srcElement;	e = e || window.event;	if(e)	{		tt_musX = tt_GetEvtX(e);		tt_musY = tt_GetEvtY(e);	}	if(tt_iState & 0x4)	{		// Prevent jam of mousemove events		if(!tt_op && !tt_ie)		{			if(tt_bWait)				return;			tt_bWait = true;			tt_tWaitMov.Timer("tt_bWait = false;", 1, true);		}		if(tt_aV[FIX])		{			tt_iState &= ~0x4;			tt_PosFix();		}		else if(!tt_ExtCallFncs(e, "MoveBefore"))			tt_SetTipPos(tt_Pos(0), tt_Pos(1));		tt_ExtCallFncs([tt_musX, tt_musY], "MoveAfter")	}}function tt_Pos(iDim){	var iX, bJmpMod, cmdAlt, cmdOff, cx, iMax, iScrl, iMus, bJmp;	// Map values according to dimension to calculate	if(iDim)	{		bJmpMod = tt_aV[JUMPVERT];		cmdAlt = ABOVE;		cmdOff = OFFSETY;		cx = tt_h;		iMax = tt_maxPosY;		iScrl = tt_GetScrollY();		iMus = tt_musY;		bJmp = tt_bJmpVert;	}	else	{		bJmpMod = tt_aV[JUMPHORZ];		cmdAlt = LEFT;		cmdOff = OFFSETX;		cx = tt_w;		iMax = tt_maxPosX;		iScrl = tt_GetScrollX();		iMus = tt_musX;		bJmp = tt_bJmpHorz;	}	if(bJmpMod)	{		if(tt_aV[cmdAlt] && (!bJmp || tt_CalcPosAlt(iDim) >= iScrl + 16))			iX = tt_PosAlt(iDim);		else if(!tt_aV[cmdAlt] && bJmp && tt_CalcPosDef(iDim) > iMax - 16)			iX = tt_PosAlt(iDim);		else			iX = tt_PosDef(iDim);	}	else	{		iX = iMus;		if(tt_aV[cmdAlt])			iX -= cx + tt_aV[cmdOff] - (tt_aV[SHADOW] ? tt_aV[SHADOWWIDTH] : 0);		else			iX += tt_aV[cmdOff];	}	// Prevent tip from extending past clientarea boundary	if(iX > iMax)		iX = bJmpMod ? tt_PosAlt(iDim) : iMax;	// In case of insufficient space on both sides, ensure the left/upper part	// of the tip be visible	if(iX < iScrl)		iX = bJmpMod ? tt_PosDef(iDim) : iScrl;	return iX;}function tt_PosDef(iDim){	if(iDim)		tt_bJmpVert = tt_aV[ABOVE];	else		tt_bJmpHorz = tt_aV[LEFT];	return tt_CalcPosDef(iDim);}function tt_PosAlt(iDim){	if(iDim)		tt_bJmpVert = !tt_aV[ABOVE];	else		tt_bJmpHorz = !tt_aV[LEFT];	return tt_CalcPosAlt(iDim);}function tt_CalcPosDef(iDim){	return iDim ? (tt_musY + tt_aV[OFFSETY]) : (tt_musX + tt_aV[OFFSETX]);}function tt_CalcPosAlt(iDim){	var cmdOff = iDim ? OFFSETY : OFFSETX;	var dx = tt_aV[cmdOff] - (tt_aV[SHADOW] ? tt_aV[SHADOWWIDTH] : 0);	if(tt_aV[cmdOff] > 0 && dx <= 0)		dx = 1;	return((iDim ? (tt_musY - tt_h) : (tt_musX - tt_w)) - dx);}function tt_PosFix(){	var iX, iY;	if(typeof(tt_aV[FIX][0]) == "number")	{		iX = tt_aV[FIX][0];		iY = tt_aV[FIX][1];	}	else	{		if(typeof(tt_aV[FIX][0]) == "string")			el = tt_GetElt(tt_aV[FIX][0]);		// First slot in array is direct reference to HTML element		else			el = tt_aV[FIX][0];		iX = tt_aV[FIX][1];		iY = tt_aV[FIX][2];		// By default, vert pos is related to bottom edge of HTML element		if(!tt_aV[ABOVE] && el)			iY += tt_GetDivH(el);		for(; el; el = el.offsetParent)		{			iX += el.offsetLeft || 0;			iY += el.offsetTop || 0;		}	}	// For a fixed tip positioned above the mouse, use the bottom edge as anchor	// (recommended by Christophe Rebeschini, 31.1.2008)	if(tt_aV[ABOVE])		iY -= tt_h;	tt_SetTipPos(iX, iY);}function tt_Fade(a, now, z, n){	if(n)	{		now += Math.round((z - now) / n);		if((z > a) ? (now >= z) : (now <= z))			now = z;		else			tt_tFade.Timer(				"tt_Fade("				+ a + "," + now + "," + z + "," + (n - 1)				+ ")",				tt_aV[FADEINTERVAL],				true			);	}	now ? tt_SetTipOpa(now) : tt_Hide();}function tt_SetTipOpa(opa){	// To circumvent the opacity nesting flaws of IE, we set the opacity	// for each sub-DIV separately, rather than for the container DIV.	tt_SetOpa(tt_aElt[5], opa);	if(tt_aElt[1])		tt_SetOpa(tt_aElt[1], opa);	if(tt_aV[SHADOW])	{		opa = Math.round(opa * 0.8);		tt_SetOpa(tt_aElt[7], opa);		tt_SetOpa(tt_aElt[8], opa);	}}function tt_OnCloseBtnOver(iOver){	var css = tt_aElt[4].style;	iOver <<= 1;	css.background = tt_aV[CLOSEBTNCOLORS][iOver];	css.color = tt_aV[CLOSEBTNCOLORS][iOver + 1];}function tt_OnLClick(e){	//  Ignore right-clicks	e = e || window.event;	if(!((e.button && e.button & 2) || (e.which && e.which == 3)))	{		if(tt_aV[CLICKSTICKY] && (tt_iState & 0x4))		{			tt_aV[STICKY] = true;			tt_iState &= ~0x4;		}		else if(tt_aV[CLICKCLOSE])			tt_HideInit();	}}function tt_Int(x){	var y;	return(isNaN(y = parseInt(x)) ? 0 : y);}Number.prototype.Timer = function(s, iT, bUrge){	if(!this.value || bUrge)		this.value = window.setTimeout(s, iT);}Number.prototype.EndTimer = function(){	if(this.value)	{		window.clearTimeout(this.value);		this.value = 0;	}}function tt_GetWndCliSiz(s){	var db, y = window["inner" + s], sC = "client" + s, sN = "number";	if(typeof y == sN)	{		var y2;		return(			// Gecko or Opera with scrollbar			// ... quirks mode			((db = document.body) && typeof(y2 = db[sC]) == sN && y2 &&  y2 <= y) ? y2 			// ... strict mode			: ((db = document.documentElement) && typeof(y2 = db[sC]) == sN && y2 && y2 <= y) ? y2			// No scrollbar, or clientarea size == 0, or other browser (KHTML etc.)			: y		);	}	// IE	return(		// document.documentElement.client+s functional, returns > 0		((db = document.documentElement) && (y = db[sC])) ? y		// ... not functional, in which case document.body.client+s 		// is the clientarea size, fortunately		: document.body[sC]	);}function tt_SetOpa(el, opa){	var css = el.style;	tt_opa = opa;	if(tt_flagOpa == 1)	{		if(opa < 100)		{			// Hacks for bugs of IE:			// 1.) Once a CSS filter has been applied, fonts are no longer			// anti-aliased, so we store the previous 'non-filter' to be			// able to restore it			if(typeof(el.filtNo) == tt_u)				el.filtNo = css.filter;			// 2.) A DIV cannot be made visible in a single step if an			// opacity < 100 has been applied while the DIV was hidden			var bVis = css.visibility != "hidden";			// 3.) In IE6, applying an opacity < 100 has no effect if the			//	   element has no layout (position, size, zoom, ...)			css.zoom = "100%";			if(!bVis)				css.visibility = "visible";			css.filter = "alpha(opacity=" + opa + ")";			if(!bVis)				css.visibility = "hidden";		}		else if(typeof(el.filtNo) != tt_u)			// Restore 'non-filter'			css.filter = el.filtNo;	}	else	{		opa /= 100.0;		switch(tt_flagOpa)		{		case 2:			css.KhtmlOpacity = opa; break;		case 3:			css.KHTMLOpacity = opa; break;		case 4:			css.MozOpacity = opa; break;		case 5:			css.opacity = opa; break;		}	}}function tt_Err(sErr, bIfDebug){	if(tt_Debug || !bIfDebug)		alert("Tooltip Script Error Message:\n\n" + sErr);}//============  EXTENSION (PLUGIN) MANAGER  ===============//function tt_ExtCmdEnum(){	var s;	// Add new command(s) to the commands enum	for(var i in config)	{		s = "window." + i.toString().toUpperCase();		if(eval("typeof(" + s + ") == tt_u"))		{			eval(s + " = " + tt_aV.length);			tt_aV[tt_aV.length] = null;		}	}}function tt_ExtCallFncs(arg, sFnc){	var b = false;	for(var i = tt_aExt.length; i;)	{--i;		var fnc = tt_aExt[i]["On" + sFnc];		// Call the method the extension has defined for this event		if(fnc && fnc(arg))			b = true;	}	return b;}tt_Init();

⌨️ 快捷键说明

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