使用JQuery有问题的会话超时

时间:2012-11-30 05:13:31

标签: java javascript jquery-ui timeout timeout-dialog.js

我使用JQuery插件实现了一个会话超时,它的实现方式就像, 从页面加载,它启动计时器,10秒后,将显示弹出窗口。 像这样http://rigoneri.github.com/timeout-dialog.js/

function ShowTimeoutWarning(){
$.timeoutDialog({timeout: 1, countdown: 60, restart_on_yes: false});

}

setTimeout( 'ShowTimeoutWarning();', 100000 ); 

当用户空闲10秒钟时,此代码可以正常工作。但即使用户在页面上进行某些操作,也会显示弹出窗口,无论用户是否空闲。我希望这个代码只在用户空闲时运行。 请帮助我。

感谢!!!

3 个答案:

答案 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>