1

我正在开发一个使用 JavaScript 和 jQuery 的胖客户端应用程序。如果我的会话空闲 45 秒或更长时间(取决于不同的业务/用户),我的会话就会超时。

目前,超时事件是由我无权访问的供应商代码触发的。如果发现会话空闲超过特定时间阈值(例如:25 秒),我想在屏幕上显示一个计时器。

同时,计时器还应该与第三方计时器(我无权访问)匹配(可以管理边际差异)。

有人可以为此提出最佳解决方案吗?

4

3 回答 3

1

值得分享您已有的任何代码,以便我们为您提供更准确的建议。

但是,为了给您一些指导,请看一下 JavaScript window.setTimeout() 方法。它本质上是在一段时间后触发回调。可以肯定地说,如果您的供应商使用 JavaScript 来跟踪时间,那么这也是他们将使用的相同基本方法。

您可以非常轻松地设置和重置timeout,因此一旦设置,您可以侦听用户交互事件(滚动、单击等)并使用这些事件触发超时重置(将“倒计时”重新设置为开始)。

做一些研究,我相信您将能够开发出合适的解决方案!

关于与供应商超时的接口,如果没有更多信息,我们谁都无法提供帮助。听起来您对此没有任何控制权,因此可能不可能(也许联系供应商并询问?)。

如果您知道每个用例的超时限制,您可以确保您的超时与他们的匹配。但是,考虑到它的代码重复,这会有点烦人,并且还意味着如果您的供应商改变他们的时间,您的应用程序将会“崩溃”。

TL/DR:如果你想写一些东西来做你描述的事情,请阅读 JavaScript window.setTimeout() 方法。但是,薄弱环节是您无法访问供应商的超时例程。考虑到这一点,我的第一步是联系供应商并询问,他们的 API 中可能已经有一些你不知道的东西!

于 2013-06-04T13:26:06.893 回答
1

好的,我不太明白你的逻辑,但是在谷歌上简单搜索 jQuery 插件计时器给了我:

http://www.tripwiremagazine.com/2013/04/jquery-countdown-scripts.html

很多...

希望其中之一适合您的需求。

于 2013-06-05T05:24:47.100 回答
1

光环,

我终于设法在我的应用程序中尝试了一个计时器(基于触摸)。以下代码对我来说效果很好。

var count = 50;
$(document).ready(function () {
var Timer = $.timer(function() {
    $('#counter').html("Your Session will expire in " + --count + "seconds");

});
Timer.set({ time : 1000, autostart : true });
    $(this).mousemove(function (e) {
                idleTime = 0;
                count = 50;
                Timer.reset();
                Timer.stop();                   
            });
            $(this).keypress(function (e) {
                idleTime = 0;
                count = 50;
                Timer.stop();
                Timer.reset();
            });

    var idleInterval = setInterval(function (){
        idleTime = idleTime + 1;
        if (idleTime > 10) 
        { 
        Timer.set({ time : 600, autostart : true });            
        $('#counter').css("display", "block");  
于 2013-07-08T13:29:48.517 回答