基本上我想锁定屏幕,如果用户在一段时间内什么也没做。如何检测用户在一段时间内什么也没做。我应该搜索的术语是什么?
答案 0 :(得分:0)
当你说锁定屏幕时...这是否意味着用户将从网站注销并使用用户名&密码?经过一段固定的时间?
然后,这看起来很直接。只需将cookie到期时间设置为他可以认为处于登录状态的预期分钟数。到期后?如果用户进行交互,他将进入登录屏幕。
另一种解决方案:
您可以将最后一个用户交互时间保存在Javascript变量中,然后在setinterval方法中运行另一个方法来计算上次交互和当前时间之间的时间差。如果值大于限制,则自动重定向。
答案 1 :(得分:0)
将一些事件(mouseover,mousemove,keydown,scroll等)绑定到您的身体。因此,如果用户正在执行任何操作,那么将触发事件。因此,当事件将被触发时,然后使用当前时间更新一些标志并配置将每5秒钟监听的webworker(或者您可以使用setInterval( ) 方法)。在每5秒钟,回调函数将检查用户上次执行某些操作时的最新情况。如果超过您的超时时间,请执行屏幕锁定或您想要的任何操作。
答案 2 :(得分:0)
您可以使用Date
标记某个时间点并将其用作计时器。
您可以使用addEventListener
侦听会重置计时器的事件。
最后,您可以设置interval
来测试now和最后一次用户操作的Date
之间的差异。
//https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener
var lastAction = new Date();
var lastActionInterval = setInterval(function(){
//if more than 5 seconds (5000 milliseconds)
if(new Date() - lastAction > 5 * 1000) {
//Act on timeout
alert("timeout!");
//Stop checking
clearInterval(lastActionInterval);
}
},1000); //Checks every second (1000 milliseconds)
function userDidSomething(){
lastAction = new Date();
}
//bind mousemove and keydown actions to reset our timer
window.addEventListener("mousemove", userDidSomething, false);
window.addEventListener("keydown", userDidSomething, false);

编辑1
更简单的方法是使用setTimeout
,然后在用户操作上重置它:
//https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener
var userActionHandle;
function userDidSomething() {
clearTimeout(userActionHandle);
userActionHandle = setTimeout(function () {
alert("5 seconds of inactivity");
}, 5000);
}
window.addEventListener("mousemove", userDidSomething, false);
window.addEventListener("keydown", userDidSomething, false);
//Start timeout
userDidSomething();