比间隔更好的是添加一个窗口模糊侦听器和一个窗口焦点侦听器。在模糊时,记录当前时间。在焦点上,确认您仍然登录/同步/您需要做的任何事情。
基本上完全相同的东西,但它只在必要时运行,而不是在一段时间内减慢整个页面的速度。
更新
var $window = $(window),
$window.__INACTIVITY_THRESHOLD = 60000;
$window.add(document.body); //necessary for mobile browsers
$window.declareActivity = function () { $window.__lastEvent = new Date(); };
$window.blur($window.declareActivity);
$window.focus(function(){
var diff = (new Date()) - $window.__lastEvent;
if (diff > $window.__INACTIVITY_THRESHOLD) {
$window.trigger("inactivity");
}
});
$window.on("inactivity", "", null, function () {
//your inactivity code
});
虽然如果手机关机,这个模糊事件似乎很粗略,我不知道我会在所有情况/移动设备上信任它。所以我可能会抛出这样的东西:
$(document.body).on("click scroll keyup", "", null, $window.declareActivity);
这样我的不活动计时器也适用于用户刚刚走开的情况。根据您的站点,您可能需要调整该确切的事件列表 - 或简单地输入 $window.declareActivity(); 到响应用户输入的现有脚本中。