从多长时间用户没有做任何javascript

时间:2016-06-15 06:50:55

标签: javascript time

基本上我想锁定屏幕,如果用户在一段时间内什么也没做。如何检测用户在一段时间内什么也没做。我应该搜索的术语是什么?

3 个答案:

答案 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();