为了账号安全,请及时绑定邮箱和手机立即绑定

如果用户当前在页面上处于活动状态,如何使用JavaScript / jQuery进行检测?

如果用户当前在页面上处于活动状态,如何使用JavaScript / jQuery进行检测?

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

3 回答

?
FFIVE

TA贡献1797条经验 获得超6个赞

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


查看完整回答
反对 回复 2019-11-28
?
交互式爱情

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);

    });

});

有人看到任何问题吗?


查看完整回答
反对 回复 2019-11-28
  • 3 回答
  • 0 关注
  • 739 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信