我使用JQuery插件实现了一个会话超时,它的实现方式就像, 从页面加载,它启动计时器,10秒后,将显示弹出窗口。 像这样http://rigoneri.github.com/timeout-dialog.js/
function ShowTimeoutWarning(){
$.timeoutDialog({timeout: 1, countdown: 60, restart_on_yes: false});
}
setTimeout( 'ShowTimeoutWarning();', 100000 );
当用户空闲10秒钟时,此代码可以正常工作。但即使用户在页面上进行某些操作,也会显示弹出窗口,无论用户是否空闲。我希望这个代码只在用户空闲时运行。 请帮助我。
感谢!!!
答案 0 :(得分:1)
有一个通用的javascript函数启动setTimeout()。请注意,这应该是一个小于web.xml中定义的会话超时的时间。因此,当超时到期时,您会向用户发出警告,询问是否使会话无效。在每次服务器调用和每个页面重新加载时,重置此setTimeout()。
希望这有帮助。
答案 1 :(得分:0)
这是通过计时器和一些JavaScript来完成的。当计时器在页面上到期时,浏览器会请求在服务器上调用session.invalidate()的URL。
答案 2 :(得分:0)
你应该尝试jQuery idleTimer插件 http://www.paulirish.com/2009/jquery-idletimer-plugin/
<script type="text/javascript">
$(function () {
var timeout = 10000;
$(document).bind("idle.idleTimer", function () {
// function you want to fire when the user goes idle
$.timeoutDialog({ timeout: 0.25, countdown: 30, keep_alive_url: '/KeepAlive.aspx', logout_redirect_url: '/Signin.aspx', restart_on_yes: true });
});
$(document).bind("active.idleTimer", function () {
// function you want to fire when the user becomes active again
$.get('KeepAlive.aspx?date=' + escape(new Date()));
});
$.idleTimer(timeout);
});
</script>