当我的标签没有聚焦时,会话计时器停止。我希望它在我的网站在浏览器中打开时运行。任何解决方案?
function startTimer() {
timeLimitInSeconds--;
var minutes = Math.floor(timeLimitInSeconds / 60);
var seconds = timeLimitInSeconds % 60;
if (minutes == 1 && seconds == 0) {
Swal.fire({
title: 'Your session will logout within 1 minute. Do you want to continue?',
// text: "You won't be able to revert this!",
icon: 'warning',
showCancelButton: true,
confirmButtonColor: '#3085d6',
cancelButtonColor: '#d33',
confirmButtonText: 'Yes ',
cancelButtonText: 'No',
allowOutsideClick: false,
allowEscapeKey: false
}).then((result) => {
if (result.isConfirmed) {
console.log("Session Continue Windows Reload..")
window.location.reload()
} else {
window.location = "${sessionScope.clienturl}/logout";
}
})
} else if (minutes <= 0 && seconds <= 0) {
console.log("Logout Fired After Time Out")
window.location = "/logout";
}
if (timeLimitInSeconds < 0) {
timerElement.textContent = '00:00';
clearInterval(timerInterval);
return;
}
if (minutes < 10) {
minutes = '0' + minutes;
}
if (seconds < 10) {
seconds = '0' + seconds;
}
timerElement.textContent = minutes + ':' + seconds;
}
字符串
1条答案
按热度按时间3npbholx1#
这个问题可能源于浏览器处理计时器和时间间隔的方式,当一个选项卡不在焦点上时。浏览器通常会限制或暂停计时器,以节省非活动选项卡的资源。如果您依赖客户端JavaScript计时器,此行为可能会影响您的会话管理。
以下是一些你可以考虑的方法来处理这种情况:
使用服务器端会话管理:考虑在服务器端管理会话。这种方法更可靠,因为它不依赖于客户端JavaScript。当用户与您的网站交互时,向服务器发送请求以更新会话状态。我希望这对您有所帮助