LE2。任何其他想法如何解决这个问题?javascript检查元素是否可见并相应地设置“setInterval”
我有这样的代码,并想不通为什么工作不正常:
$(function autorun() {
if ($("#contactForm").is(":visible")){
setInterval("refreshAjax();", 150000000000);
}
else {
setInterval("refreshAjax();", 15000);
}
setTimeout("autorun();", 2000)
});
...
<body onLoad="autorun()">
现在即使它不断刷新页面,每2秒, “contactForm”是可见的。
我的逻辑是:如果“contactForm”可见,则延迟刷新或停止刷新,继续检查,但同时相应地刷新页面到其他语句。
LE。
$(function() {
refreshAjax = function(){$("#flex1").flexReload();
}
});
LE2。最终的解决方案通过@Nick Craver提供here
$(function() {
var ajaxTimeout;
function autorun() {
if ($("#contactForm").is(":visible")){
if(ajaxTimeout) {
clearInterval(ajaxTimeout);
ajaxTimeout = false;
}
}
else if(!ajaxTimeout) {
ajaxTimeout = setInterval(refreshAjax, 15000);
}
}
setInterval(autorun, 2000);
});
感谢, 克里斯蒂安。
什么是自动运行和refreshAjax?为什么页面会每2秒刷新一次,而不是每1.5秒刷新一次? – 2010-10-30 07:34:53
refreshAjax刷新flexigrid和自动运行我试图检查“contactForm”是否可见,所以我可以停止或继续刷新flexigrid。如果flexigrid在刷新时显示“contactForm”,则叠加层存在问题。谢谢。 – Chris19 2010-10-30 08:16:52