重新开始setTimeout前最好先清除之前的计时函数...
if(document.getElementById("hidIsShow").value == "true")
{
var t = document.getElementById("hidTimeOut").value;
clearTimeout(objTime); // 这上这句
objTime = setTimeout("ShowMsg()",parseInt(t,10) * 60 * 1000); //这里你调用的setTimeout所在函数,这是一个类似递归的循环; 在这之前要清除之前的 objTime否则会有N个递归在运行...
}
else
{
clearTimeout( objTime );
objTime = null;
msg = null;
CollectGarbage();
}
if(document.getElementById("hidIsShow").value == "true")
{
var t = document.getElementById("hidTimeOut").value;
clearTimeout(objTime); // 这上这句
objTime = setTimeout("ShowMsg()",parseInt(t,10) * 60 * 1000); //这里你调用的setTimeout所在函数,这是一个类似递归的循环; 在这之前要清除之前的 objTime否则会有N个递归在运行...
}
else
{
clearTimeout( objTime );
objTime = null;
msg = null;
CollectGarbage();
}
我想问题在你的AjAx (GetXmlHttpResult)
新的setTimeout调用 ShowMsg() 的时候可以上次调用后请求的结果还没有反回来, 这样就会重复请求后台页面, 造成资源占用...我见你在第一次返回结果后设计了一个 value值为true(证明请求完成吧?)是不是在重新请求前重置这个value为false什么的
这样if(document.getElementById("hidIsShow").value == "true")
{
var t = document.getElementById("hidTimeOut").value;
document.getElementById("hidIsShow").value = "false"); // 这里是后加的
objTime = setTimeout("ShowMsg()",parseInt(t,10) * 60 * 1000);
}
else
{
clearTimeout( objTime );
objTime = null;
msg = null;
CollectGarbage();
}
用XMLHTTP取要弹出的信息.如果有信息就会弹出
var num = v.substring( 0, v.indexOf( "<" ) )
取出信息条数,如果大于0就弹出
if(document.getElementById("hidIsShow").value == "true")
只是判断是不是要弹出窗口
如果用户设置了不弹出窗口,就算有信息提示也不会弹出
delete obj;