我的页面上有一个用户活动。当用户处于非活动状态(没有移动鼠标)30 分钟时,它会提示用户警告会话即将到期。如果用户没有点击OK按钮并保持非活动状态将被自动注销(会话销毁)。
现在每 25 分钟检查一次,一切正常,直到用户打开同一页面的多个选项卡。如果打开了多个选项卡并且用户正在处理一个选项卡但将另一个选项卡保持打开 25 分钟,则会超时。
当多个选项卡打开并且用户在至少一个选项卡中处于活动状态时,我如何防止它超时会话,这意味着用户正在页面的至少一个选项卡中移动鼠标。
检测鼠标移动的js代码如下:
timer = 0;
function cIncrement() {
if (timer == 25) {
//25 minutes passed warn user that in 5 minutes it will expire
//here is the code that prompts user with dialog
if (OK clicked on dialog) {
timer = 0;
} else {
//execute logout script.
}
}
if (timer == 30) {
//30 minutes passed log user out
//script to log user out
}
}
$(function() {
var interval = setInterval("cIncrement()", 60000); //increment every minute
//reset timer on mouse move
$(document).mousemove(function(e) {
timer = 0;
});
});
注意:当打开 1 个选项卡时,上面的代码可以正常工作。
我将如何更改此设置,以便如果打开 2 个或更多选项卡并且用户在其中任何一个中处于活动状态,则应将计时器重置为0