【发布时间】:2012-08-21 07:37:35
【问题描述】:
我正在尝试使用 ajax 刷新 div。代码本身已经实现并且已经运行。我希望 div 每 30 秒刷新一次,但仅在活动选项卡上。据我了解,无论选项卡是否正在使用,setInterval 都会每次刷新。我想将 mouseenter(或暗示用户在网站上处于活动状态的某种其他类型的用户交互)与 setInterval 结合起来,这样 setInterval 在不活动时不会被触发。
目前我有这段代码在初始页面加载时效果很好。在前 30 秒内没有刷新,在 div 上的 mouseenter 之前也没有刷新。但是,在最初的 30 秒后,它会在每次 mouseenter 时刷新。
$(document).ready(function(){
$("#container").hide();
$("#loading").show();
$("div#refresh").load('example.com/load.php', function(){ $("#container").show(); $("#loading").hide(); });
function refresh() {
$("#refresh").mouseenter(function() {
// $("#container").hide();
$("#loading").show();
$("div#refresh").load('example.com/load.php', function(){ $("#container").show(); $("#loading").hide(); });
});
clearInterval(intervalID);
}
var intervalID = setInterval(refresh, 30000); // Will alert every 30 second.
// clearInterval(intervalID); // Will clear the timer.
});
【问题讨论】:
-
您的代码中有重复的代码。
-
你真正想要的是How to tell if browser/tab is active(标记为重复)
-
@Šime Vidas 对于重复的代码,如果您谈论刷新功能的内部和外部,它就在那里,以便它在初始页面加载时加载。如果我忽略它,页面不会刷新,直到 30 秒和 mouseenter
-
@cwal:是的,但它仍然是重复的代码。只需调用
refresh()而不是重复代码....
标签: php javascript jquery ajax refresh