好吧,您必须手动编写代码,这并不难。你可以使用 onfocus 和 onblur 函数来做这样的事情:
$(function() {
window.isActive = true;
$(window).focus(function() { this.isActive = true; });
$(window).blur(function() { this.isActive = false; });
showIsActive();
});
function showIsActive()
{
console.log(window.isActive)
window.setTimeout("showIsActive()", 2000);
}
function doWork()
{
if (!window.isActive) { /* Check for idle time */}
}
如果您进行一些搜索,您会发现已经提出并回答了这个问题的各种问题,您可能会找到可以使用您提到的插件之一实现的解决方案。
尝试:
仅在选项卡处于活动状态时运行 setTimeout
或
如何判断浏览器/选项卡是否处于活动状态
编辑 - >添加:
或者我会尝试不同的方法。您可以创建一个带有一些哈希值的 cookie,并将该哈希值保存在您的数据库中,并在窗口处于活动状态时更新时间戳(您可以每 5 秒或其他时间检查一次,这不是一个密集的请求)
然后,在之前进行另一次检查(但在相同的请求)查看自上次时间戳以来已经过去了多少时间,并在必要时将其注销。
当时间过去时,它不会立即将它们注销,但是当他们尝试通过再次打开该站点或通过关注选项卡/窗口来访问该站点时,它会注销。