主题:[讨论]脚本响应鼠标拖动滑动条事件导致死机
以下为响应鼠标拖动滑动条的脚本,但是运行时发现有的机器到了这个页面移动滑动条的话就会死机。我怀疑是占用CPU太多的缘故,一看,运行时占用了70%左右的CPU。为什么会死机?请指教。谢。补充下,程序是运行在linux下。
function event_mousedown()
{
var strID = window.event.srcElement.id;
if (strID.length > 4 && strID.substring(0,4) == "knob")
{
sKnobDragging = strID;
nKnobOffset = window.event.screenX - window.document.all.item(sKnobDragging).style.pixelLeft;
}
else
sKnobDragging = "";
}
function event_mouseup()
{
sKnobDragging = "";
window.event.cancelBubble = true;
window.event.returnValue = false;
return;
}
function event_slider()
{
if (sKnobDragging.length > 0)
{
nPos = window.event.screenX - nKnobOffset;
var nPosLen = 0;
switch(sKnobDragging)
{
case "knobColorB":
nPosLen = document.all.tdColorB.clientWidth - document.all.knobColorB.clientWidth;
ratio = MAX_Analog/nPosLen;
break;
case "knobColorC":
nPosLen = document.all.tdColorC.clientWidth - document.all.knobColorC.clientWidth;
ratio = MAX_Analog/nPosLen;
break;
case "knobColorH":
nPosLen = document.all.tdColorH.clientWidth - document.all.knobColorH.clientWidth;
ratio = MAX_Analog/nPosLen;
break;
case "knobColorS":
nPosLen = document.all.tdColorS.clientWidth - document.all.knobColorS.clientWidth;
ratio = MAX_Analog/nPosLen;
break;
}
if (nPos > nPosLen)
nPos = nPosLen;
else if (nPos < 0)
nPos = 0;
switch(sKnobDragging)
{
case "knobColorB":
public_ColorB = parseInt(ratio * nPos);
ColorB.innerText=public_ColorB
break;
case "knobColorC":
public_ColorC = parseInt(ratio * nPos);
ColorC.innerText=public_ColorC
break;
case "knobColorH":
public_ColorH = parseInt(ratio * nPos);
ColorH.innerText=public_ColorH
break;
case "knobColorS":
public_ColorS = parseInt(ratio * nPos);
ColorS.innerText=public_ColorS
break;
}
window.document.all.item(sKnobDragging).style.pixelLeft = nPos;
}
window.event.cancelBubble = true;
window.event.returnValue = false;
}
function event_mousedown()
{
var strID = window.event.srcElement.id;
if (strID.length > 4 && strID.substring(0,4) == "knob")
{
sKnobDragging = strID;
nKnobOffset = window.event.screenX - window.document.all.item(sKnobDragging).style.pixelLeft;
}
else
sKnobDragging = "";
}
function event_mouseup()
{
sKnobDragging = "";
window.event.cancelBubble = true;
window.event.returnValue = false;
return;
}
function event_slider()
{
if (sKnobDragging.length > 0)
{
nPos = window.event.screenX - nKnobOffset;
var nPosLen = 0;
switch(sKnobDragging)
{
case "knobColorB":
nPosLen = document.all.tdColorB.clientWidth - document.all.knobColorB.clientWidth;
ratio = MAX_Analog/nPosLen;
break;
case "knobColorC":
nPosLen = document.all.tdColorC.clientWidth - document.all.knobColorC.clientWidth;
ratio = MAX_Analog/nPosLen;
break;
case "knobColorH":
nPosLen = document.all.tdColorH.clientWidth - document.all.knobColorH.clientWidth;
ratio = MAX_Analog/nPosLen;
break;
case "knobColorS":
nPosLen = document.all.tdColorS.clientWidth - document.all.knobColorS.clientWidth;
ratio = MAX_Analog/nPosLen;
break;
}
if (nPos > nPosLen)
nPos = nPosLen;
else if (nPos < 0)
nPos = 0;
switch(sKnobDragging)
{
case "knobColorB":
public_ColorB = parseInt(ratio * nPos);
ColorB.innerText=public_ColorB
break;
case "knobColorC":
public_ColorC = parseInt(ratio * nPos);
ColorC.innerText=public_ColorC
break;
case "knobColorH":
public_ColorH = parseInt(ratio * nPos);
ColorH.innerText=public_ColorH
break;
case "knobColorS":
public_ColorS = parseInt(ratio * nPos);
ColorS.innerText=public_ColorS
break;
}
window.document.all.item(sKnobDragging).style.pixelLeft = nPos;
}
window.event.cancelBubble = true;
window.event.returnValue = false;
}