我正在尝试创建一个功能,当您单击鼠标时,可以看到您处于活动状态或AFK。当时间用完时,此人必须离线。如果此人在时间用完后再次点击,则此人必须重新上线。此外,如果他在该时间内再次点击,则必须始终重置该时间,以便您可以看到他在页面上处于活动状态。有谁知道我需要调整什么才能使它工作?
=SUM(INDEX(INDIRECT(D3),0,2))
答案 0 :(得分:1)
当您在同一事件下运行的两个处理程序下运行相反的逻辑时,您的逻辑存在缺陷。
要解决此问题,您需要使用单个事件处理程序。您可以在单击处理程序中立即在线设置用户,然后在N秒后设置超时以将其标记为脱机,如下所示:
var time;
window.addEventListener('click', function() {
clearTimeout(time)
SaveUrl('Save/SetIsOnlineUser', {
isOnline: true
});
time = setTimeout(function() {
SaveUrl('Save/SetIsOnlineUser', {
isOnline: false
});
}, 5000);
})
function SaveUrl(u, o) {
console.log('Online:', o.isOnline);
}
请注意,我只用了5秒的时间使效果更明显。