我需要检测用户超过30分钟在当前页面上处于非活动状态(而不是单击或键入)的情况。我认为最好使用附加在body标签上的事件模糊处理,然后继续将计时器重置30分钟,但是我不确定如何创建它。我有可用的jQuery,尽管我不确定其中有多少会实际使用jQuery。编辑:我更需要知道他们是否正在积极使用该站点,因此单击(更改字段或字段在字段中的位置或选择复选框/收音机)或键入(在输入,文本区域等中)。如果他们在另一个选项卡中或使用其他程序,那么我的假设是他们不使用该站点,因此应注销(出于安全原因)。编辑#2:所有人都清楚,这根本不能确定用户是否已登录,是否经过身份验证或其他任何操作。现在,如果用户在30分钟内未发出页面请求,服务器将注销该用户。此功能可以防止某人花费30分钟以上的时间填写表单,然后提交表单只是为了发现自己尚未注销。因此,这将与服务器站点结合使用,以确定用户是否处于非活动状态(不是单击或键入)。基本上,要做的是在闲置25分钟后,将向他们显示一个对话框以输入密码。如果不在5分钟之内,系统将自动注销它们,并注销服务器的会话(下次访问页面时,与大多数站点一样)。Javascript仅用作对用户的警告。如果禁用了JavaScript,则他们将不会收到警告,并且(以及大多数网站无法正常工作)它们将在下次请求新页面时注销。
3 回答

FFIVE
TA贡献1797条经验 获得超6个赞
您可以观看鼠标的移动,但这是您将获得最好的指示,以表明用户仍在那儿而无需听click事件。但是,javascript无法判断它是活动选项卡还是浏览器处于打开状态。(好吧,您可以获取浏览器的宽度和高度,并告诉您浏览器是否已最小化)

交互式爱情
TA贡献1712条经验 获得超3个赞
这就是我想出的。它似乎可以在大多数浏览器中使用,但是我想确保它可以一直在任何地方使用:
var timeoutTime = 1800000;
var timeoutTimer = setTimeout(ShowTimeOutWarning, timeoutTime);
$(document).ready(function() {
$('body').bind('mousedown keydown', function(event) {
clearTimeout(timeoutTimer);
timeoutTimer = setTimeout(ShowTimeOutWarning, timeoutTime);
});
});
有人看到任何问题吗?
添加回答
举报
0/150
提交
取消