我已经使用了一些jquery keepalive会话插件而没有问题。
我被问到了一些不同的东西。
我们有一些表格(在我开始之前构建)相当大,用户在其中工作了一段时间。该页面永远不会刷新,因此他们单击“保存”并且会话已过期并重定向到登录页面。
我建议使用其中一个插件,只是在会话到期前几分钟提示用户进行ajax调用以保持会话处于活动状态。
然而,他们说,如果他们没有看到提示并将它们全部错过并将其记录下来,那会怎样呢。
他们希望我查一下
他们试图避免提示。
有没有JS / Jquery知道页面是否有任何客户端交互?
答案 0 :(得分:0)
不是使用计时器来检查他们是否在过去5分钟内有过任何互动,你是否只能在表格发生变化时发送你的保持活动?它将消除对定时器循环和小型有效负载ajax调用的需要,只是为了保持会话存活不应该损害性能。
如果您仍想保留计时器循环,我仍然建议您在表单元素上使用change事件。改变形式意味着他们正在与之互动,我认为这满足了他们的要求。
编辑:更新以使用计时器
var idle = true;
function finalIdleCheck(prompt){
if(idle){
if(prompt){
alert("last warning!");
}
//Tighten the idle check time loop; may even want to go < 30s
setTimeout(finalIdleCheck, 30*1000);
} else {
//Ajax stuff to keep session alive
idle = true; //Reset idle flag
}
}
function checkIdle(){
if(idle){
//Warn them
alert("You've been idle");
setTimeout(function(){
finalIdleCheck(true);
}, 60*2*1000);
} else {
//Ajax stuff to keep session alive
idle = true; //Reset idle flag
}
}
$(document).ready(function(){
$("form input").on("change", function(){
idle = false;
}
setTimeout(idleCheck, 60*5*1000);
}