Я делаю систему тайм-аута, чтобы выйти из использования через определенное время, пользователь открывает вкладку браузера. Я не хочу вытеснять пользователя, пока он пользуется системой. Для этого я проверяю, когда он двигает мышкой и сбрасывает время. Проблема возникает там, если она находится в одной вкладке, отлично. Но когда в 2 шагах вкладок сеанс заканчивается и не показывает сообщение пользователю. ** Локальное хранилище ** изменяется правильно, но на другой вкладке оно продолжает работать. Я хочу, чтобы, когда локальное хранилище было равно 0, принудительно завершило сеанс ajax. ** Следуйте коду **
SetTimeOut:
function () {
//1800000
var tempo = 10000;
localStorage.setItem("tempo", "1");
var timeout= 0;
var x = new Boolean(false);
function EventoAlert() {
swal({
title: "Sessão expirada",
text: "Sessão expirada por inatividade",
icon: "dist/img/time-clock.webp",
button: true,
button: "Sair",
className: "swalsair",
closeOnClickOutside: false,
}).then((value) => {
var url_ajax = 'index.php';
window.location.href = url_ajax;
}).catch(swal.noop);
};
$(function () {
timeout = setTimeout(function () { }, tempo);
});
$.ajax({
type: 'POST',
url: 'index.php?id=98',
data: '236464302',
success:
function () {
$(document).on('mousemove', async function () {
if(localStorage.getItem("tempo") == "0" && !x){
$.ajax({
type: 'POST',
url: 'index.php?id=59&func=timeout',
data: '236464302',
success: function () {
EventoAlert();
},
error: function () {
window.location.href = 'index.php';
}
});
}
if (timeout !== null) {
clearTimeout(timeout);
timeout = setTimeout(function () { }, tempo);
}
console.log("testeeeeeee");
timeout = setTimeout(function () {
$.ajax({
type: 'POST',
url: 'index.php?id=59&func=timeout',
data: '236464302',
success: function () {
localStorage.setItem("tempo", "0");
x = true;
EventoAlert();
},
error: function () {
window.location.href = 'index.php';
}
});
}, tempo);
});
},
error: function () {
window.location.href = 'index.php';
}
});
},