2013-06-04 35 views
1

我正在使用JavaScript和jQuery的胖客户端应用程序。我的会话超时45秒或更长时间(取决于不同的业务/用户)。使用Javascript的定时器显示/ jquery

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

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

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

+0

您尝试过什么吗? –

回答

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"); 
1

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

但是,为了给您一些指导,请参阅JavaScript window.setTimeout() method。它在一段时间之后基本上会触发回调。如果你的供应商使用JavaScript来跟踪时间,那么这是相当安全的,那么这也是他们将使用的基本方法。

您可以非常容易地设置和重置timeout,因此一旦设置,您就可以监听用户交互事件(滚动,点击等)并使用这些事件触发超时重置(将“倒计时”返回开始)。

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

关于与供应商的超时接口问题,没有更多信息,我们都无法提供帮助。这听起来不像你有任何控制权,所以它可能是不可能的(可能联系供应商并询问?)。

如果您知道每个用例的超时限制,可以确保超时限制与他们的超时限制匹配。然而,考虑到代码重复性,这将会有点烦人,并且也意味着如果您的供应商更改其计时,您的应用程序将会“中断”。

TL/DR:如果您想编写将执行您所描述的操作的代码,请阅读JavaScript window.setTimeout() method。但是,薄弱环节将是您无法访问您的供应商的超时例程。考虑到这一点,我的第一步就是联系供应商并询问,他们可能在他们的API中已有一些您不知道的东西!

+0

嗨,John和Matt,我是JS和Jquery的新手。我尝试了一些我在互联网上找到的东西...但后来发现它可能不适合目的(我可能在这方面是错误的)。这就是为什么决定问专家而不是自己挖掘。 – Subash