我正在开发一个使用 JavaScript 和 jQuery 的胖客户端应用程序。如果我的会话空闲 45 秒或更长时间(取决于不同的业务/用户),我的会话就会超时。
目前,超时事件是由我无权访问的供应商代码触发的。如果发现会话空闲超过特定时间阈值(例如:25 秒),我想在屏幕上显示一个计时器。
同时,计时器还应该与第三方计时器(我无权访问)匹配(可以管理边际差异)。
有人可以为此提出最佳解决方案吗?
我正在开发一个使用 JavaScript 和 jQuery 的胖客户端应用程序。如果我的会话空闲 45 秒或更长时间(取决于不同的业务/用户),我的会话就会超时。
目前,超时事件是由我无权访问的供应商代码触发的。如果发现会话空闲超过特定时间阈值(例如:25 秒),我想在屏幕上显示一个计时器。
同时,计时器还应该与第三方计时器(我无权访问)匹配(可以管理边际差异)。
有人可以为此提出最佳解决方案吗?
值得分享您已有的任何代码,以便我们为您提供更准确的建议。
但是,为了给您一些指导,请看一下 JavaScript window.setTimeout() 方法。它本质上是在一段时间后触发回调。可以肯定地说,如果您的供应商使用 JavaScript 来跟踪时间,那么这也是他们将使用的相同基本方法。
您可以非常轻松地设置和重置timeout
,因此一旦设置,您可以侦听用户交互事件(滚动、单击等)并使用这些事件触发超时重置(将“倒计时”重新设置为开始)。
做一些研究,我相信您将能够开发出合适的解决方案!
关于与供应商超时的接口,如果没有更多信息,我们谁都无法提供帮助。听起来您对此没有任何控制权,因此可能不可能(也许联系供应商并询问?)。
如果您知道每个用例的超时限制,您可以确保您的超时与他们的匹配。但是,考虑到它的代码重复,这会有点烦人,并且还意味着如果您的供应商改变他们的时间,您的应用程序将会“崩溃”。
TL/DR:如果你想写一些东西来做你描述的事情,请阅读 JavaScript window.setTimeout() 方法。但是,薄弱环节是您无法访问供应商的超时例程。考虑到这一点,我的第一步是联系供应商并询问,他们的 API 中可能已经有一些你不知道的东西!
好的,我不太明白你的逻辑,但是在谷歌上简单搜索 jQuery 插件计时器给了我:
http://www.tripwiremagazine.com/2013/04/jquery-countdown-scripts.html
很多...
希望其中之一适合您的需求。
光环,
我终于设法在我的应用程序中尝试了一个计时器(基于触摸)。以下代码对我来说效果很好。
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");