如何重置setInterval js中的变量

问题描述 投票:0回答:1

我遇到问题,如果 180 秒内没有任何活动,我想注销用户(如果有的话),它将重置计时器,但问题是计时器没有重置,我通过此处的日志检查了我的代码。

if ($isManager || $isAdmin) {  ?>
    var total_session_time = 180; // In seconds. After this interval of time if user is ideal then clock timer will start in seconds
    //var total_session_time = 50000;//180; // In seconds. After this interval of time if user is ideal then clock timer will start in seconds
    var clock_time_start = total_session_time + 1;
    var idleTime = 0;
    $(document).ready(function() {
        // alert('hello');
        // console.log('total_session_time->' + total_session_time)
        //idleTime = $('#idleTime').val();
        var sms_access_page = $('#sms_page_access').val(); // get val. for handle the logic of sms page will not logout.
        // console.log('sms_accss_if_value - '+sms_access_page);
        var idleInterval = setInterval(function() {
            if ($('#idleTime').val()) {
                idleTime = $('#idleTime').val();
            } else {
                idleTime = 0;
            }
            if ($('#pauseLogoutScript').val() == 0) {
                idleTime = parseInt(idleTime) + 5; // as interval is of 5 seconds added 5.
            }
            //console.log('idleTime ->'+idleTime);
            $('#idleTime').val(idleTime);
            if (idleTime > total_session_time) {
                count = clock_time_start - idleTime;
                // console.log('count ->' + count);
                if (count <= 0) {
                    if (sms_access_page != '' && sms_access_page == '7') {
                        console.log('sms page will not logout- ' + sms_access_page);
                    } else {
                        console.log('logging out');
                        window.location = 'index.php?r=site/logout'
                        //return;
                    }
                }
            }
        }, 5000); // 1000 = 1 sec
        $(this).mousemove(function(e) {
            $('#idleTime').val('');
        });
        $(this).keypress(function(e) {
            $('#idleTime').val('');
        });
    });
<?php }          ?>

提前谢谢您!

我想重置idleTime变量

javascript jquery
1个回答
0
投票

这是 JavaScript 的简化版本:

var maxIdleTime     = 180000; // in milliseconds
var lastInteraction = performance.now();

$(function() {
    $(this).on("mousemove keydown"), function() {
        lastInteraction = performance.now();
    });

    setInterval(function() {        
        if (performance.now() > lastInteraction + maxIdleTime) {
            window.location = 'index.php?r=site/logout';
        }
    }, 5000); 
});

我省略了 PHP 和 SMS 页面的内容。重点是这不必太复杂。

© www.soinside.com 2019 - 2024. All rights reserved.