下面这一段代码是我下面的一个SP写的javascript.
这一段代码会耗尽客户端的资源!直接死机!
setTimeout] setTimeout(表达式,延时时间)
其实,这一个函数的最终目的是要生成一个浮动的按钮。
而且20毫秒实在太短!
Hope to solve it tomorrow!
/***************************************************
* float move
***************************************************/
function F_FloatBar_move(objId,align,valign,xControl,yControl,hasParent)
{
var objDiv=document.getElementById(objId);
if(objDiv==null)
{
return;
}
var FloatBar_Top = F_AdjustFloatTopPx(valign,F_GetClientHeight(hasParent),hasParent);
var FloatBar_Left=F_AdjustFloatLeftPx(align,F_GetClientWidth(hasParent),hasParent);
var FloatBar_Delta = 0.05;
var scrollTop=document.documentElement.scrollTop;
var scrollLeft=document.documentElement.scrollLeft;
if(hasParent=="true")
{
scrollTop=window.parent.document.documentElement.scrollTop;
scrollLeft=window.parent.document.documentElement.scrollLeft;
}
if(yControl!="")
{
objDiv.style.top=F_GetOffsetTop(objId,valign,yControl)+"px";
}
else
{
if(objDiv.offsetTop != (scrollTop + FloatBar_Top))
{
var dy = (scrollTop + FloatBar_Top - objDiv.offsetTop) * FloatBar_Delta;
dy = (dy > 0 ? 1 : - 1) * Math.ceil(Math.abs(dy));
objDiv.style.top = F_GetTopPx(objId,(objDiv.offsetTop + dy),F_GetClientHeight("false"))+"px";
}
}
if(xControl!="")
{
objDiv.style.left=F_GetOffsetLeft(objId,align,xControl)+"px";
}
else
{
if(objDiv.offsetLeft != (scrollLeft + FloatBar_Left))
{
var dx = (scrollLeft + FloatBar_Left - objDiv.offsetLeft) * FloatBar_Delta;
dx = (dx > 0 ? 1 : - 1) * Math.ceil(Math.abs(dx));
if((objDiv.offsetLeft + dx)>=0)
{
objDiv.style.left = F_GetLeftPx(objId,(objDiv.offsetLeft + dx),F_GetClientWidth("false"))+"px";
}
}
}
setTimeout("F_FloatBar_move('"+objId+"','"+align+"','"+valign+"','"+xControl+"','"+yControl+"','"+hasParent+"')",20);
}
这一段代码会耗尽客户端的资源!直接死机!
setTimeout] setTimeout(表达式,延时时间)
在执行时,是在载入后延迟指定时间后,去执行一次表达式,记住,次数是一次
用setTimeout实现的自动变化显示随机数的效果:
<html> <head> <script> window.onload=sett; function sett() { document.body.innerHTML=Math.random(); setTimeout("sett()",500); } </script> </head> <body> </body> </html>
[setInterval] setInterval(表达式,交互时间)
则不一样,它从载入后,每隔指定的时间就执行一次表达式
用setInterval实现的自动变化显示随机数的效果: <html> <head> <script> function sett() { document.body.innerHTML=Math.random(); } setInterval("sett();", 500); </script> </script> </head> <body> </body> </html>
解决方法:我初定的方案是用setInterval来实现相应的操作。其实,这一个函数的最终目的是要生成一个浮动的按钮。
而且20毫秒实在太短!
Hope to solve it tomorrow!
/***************************************************
* float move
***************************************************/
function F_FloatBar_move(objId,align,valign,xControl,yControl,hasParent)
{
var objDiv=document.getElementById(objId);
if(objDiv==null)
{
return;
}
var FloatBar_Top = F_AdjustFloatTopPx(valign,F_GetClientHeight(hasParent),hasParent);
var FloatBar_Left=F_AdjustFloatLeftPx(align,F_GetClientWidth(hasParent),hasParent);
var FloatBar_Delta = 0.05;
var scrollTop=document.documentElement.scrollTop;
var scrollLeft=document.documentElement.scrollLeft;
if(hasParent=="true")
{
scrollTop=window.parent.document.documentElement.scrollTop;
scrollLeft=window.parent.document.documentElement.scrollLeft;
}
if(yControl!="")
{
objDiv.style.top=F_GetOffsetTop(objId,valign,yControl)+"px";
}
else
{
if(objDiv.offsetTop != (scrollTop + FloatBar_Top))
{
var dy = (scrollTop + FloatBar_Top - objDiv.offsetTop) * FloatBar_Delta;
dy = (dy > 0 ? 1 : - 1) * Math.ceil(Math.abs(dy));
objDiv.style.top = F_GetTopPx(objId,(objDiv.offsetTop + dy),F_GetClientHeight("false"))+"px";
}
}
if(xControl!="")
{
objDiv.style.left=F_GetOffsetLeft(objId,align,xControl)+"px";
}
else
{
if(objDiv.offsetLeft != (scrollLeft + FloatBar_Left))
{
var dx = (scrollLeft + FloatBar_Left - objDiv.offsetLeft) * FloatBar_Delta;
dx = (dx > 0 ? 1 : - 1) * Math.ceil(Math.abs(dx));
if((objDiv.offsetLeft + dx)>=0)
{
objDiv.style.left = F_GetLeftPx(objId,(objDiv.offsetLeft + dx),F_GetClientWidth("false"))+"px";
}
}
}
setTimeout("F_FloatBar_move('"+objId+"','"+align+"','"+valign+"','"+xControl+"','"+yControl+"','"+hasParent+"')",20);
}
浙公网安备 33010602011771号