1. 要求
登录后10分钟内客户无操作,弹框提示客户;
20分钟无操作,强制退出,不能再继续使用功能。
10分钟到20分钟之间,客户选择继续使用,重置时间,重新从0计时。
2. 实现
var handleTimeCount;
function listener(){
//tipTime定义提示时间,可放到redis或者数据库中,使用时再获取。或者登陆时就保存到参数表中,使用时获取。这里设置为10分钟
var tipTime = 10;
//exitTime 退出时间
var exitTime = 20;
//这个变量保存客户无操作的时间,单位秒
var timeTemp = 0;
//每隔1s判断一次
window.setInterval(function(){
//这个变量保存客户无操作时间,移动鼠标或者点击键盘会自动清0,过一秒加1
handleTimeCount = handleTimeCount+1;
//过一秒加一
timeTemp = timeTemp+1;
//如果用户无操作时间达到10分钟
if(handleTimeCount == tipTime*60){
timeTemp = handleTimeCount;
$.openWindow({
tranCode : "Confirm",
windowClass : "Confirm",
param : {
message :"您已长时间未操作,是否继续使用?",//提示信息
winType : "confirm"
},
//点击确定,继续使用
yesFun:function(){
//如果此时已经超过20分钟,不能用handleTimeCount,因为移动鼠标会清0
if(timeTemp >= exitTime*60){
//触发登出的控制
// 清理session,sessionData = "";
//window.location.href="http://localhost:8088";
}else{//大于10分种小于20分钟
//这个时判断session值是否还有,即客户不做交易的时间(客户做交易时会更改数据库中的不做交易的时间为0,达到设置的时间session清空,不能再做交易)
if(CONFIG_SESSION_ID){
handleTimeCount = 0;//如果session还在,客户就能正常使用,计时清0
}else{
sessionData = "";//session标志标识没有,清空session
//这里写客户重新登录的方法
}
},
noFun:function(){//客户点击否,不使用
//这里写客户重新登录的方法
}
} );
}
},1000);
}
判断客户无操作时间的方法:
$(document).mousemove(function(e){
handleTimeCount = 0;
});
$(document).keydown(function(e){
handleTimeCount = 0;
});