Проблема тайм-аута синхронизации (Javascript и ajax) - PullRequest
0 голосов
/ 10 июля 2020

Я делаю систему тайм-аута, чтобы выйти из использования через определенное время, пользователь открывает вкладку браузера. Я не хочу вытеснять пользователя, пока он пользуется системой. Для этого я проверяю, когда он двигает мышкой и сбрасывает время. Проблема возникает там, если она находится в одной вкладке, отлично. Но когда в 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';
                }
            });

        },

1 Ответ

0 голосов
/ 10 июля 2020

Чтобы проверить, когда пользователь перемещает свою мышь, вам нужно ctrl + c это в свой код:

var secondsUntilStop = [your time here];
var s;
window.onload = function(){
  setInterval(check, 1000);
}

function check(){
  s++
  if(s >= secondsUntilStop){
    //your program stop code here
  }
}
...