我在Jquery / javascript中内置了这个功能,当用户的会话即将超时时会通知用户。然后他们可以选择扩展它。如果他们没有做出选择,弹出窗口将自行关闭,浏览器将重定向到登录页面。一段时间它完美无缺。但现在我注意到只有在计算机上处于活动状态时它才能正常工作。如果计算机无人看管一整天,则在用户解锁计算机并再次登录之前,弹出窗口不会开始倒计时。
是否有人知道这种行为,即当计算机长时间无人看管时停止执行javascript?
更新:有没有办法让标签不睡觉?没有它,浏览器将无法在正确的时间重定向。
答案 0 :(得分:1)
setTimeout
仅在选项卡处于活动状态时有效。在某些浏览器中,即使更改选项卡也会使其停止计数。因此,不仅如果您在计算机上,而且如果您不在特定页面上,它可能无法正常工作。此外,在具有多任务处理的移动设备上,它必然会失败,忘记选项卡,应用程序通常会进入挂起模式。
看看这个问题,它提供了与Luka相同的解决方案,代码示例如下:
How can I make setInterval also work when a tab is inactive in Chrome?
您可能希望对传递的时间进行两次检查,一次检查是否需要显示弹出窗口,一次关闭弹出窗口,使用传递的总时间而不是不同的倒计时。
答案 1 :(得分:0)
我建议记录页面加载时的当前时间,然后每隔10秒调用一次函数,以便检查时间是否超过x量,出现问题的原因很可能是因为默认的超时函数仅在呈现页面时倒计时。