停止移动鼠标或单击的时间

时间:2018-07-12 18:02:28

标签: jquery asp.net session

我想在移动鼠标或按键时停止计时器。这是我到目前为止所掌握的,并且可以通过倒计时来实现。我不确定需要做什么才能停止时间。 (代码来自此页面:https://www.aspsnippets.com/Articles/Automatically-redirect-User-after-Session-Timeout-in-ASPNet.aspx

<script type="text/javascript">
    function SessionExpireAlert(timeout) {


        var seconds = timeout / 1000;
        document.getElementsByName("secondsIdle").innerHTML = seconds;
        document.getElementsByName("seconds").innerHTML = seconds;


        setInterval(function() {
            seconds--;
            document.getElementById("seconds").innerHTML = seconds;
            document.getElementById("secondsIdle").innerHTML = seconds;
        }, 1000);
        setTimeout(function() {
            //Show Popup before 20 seconds of timeout.
            $find("mpeTimeout").show();
        }, timeout - 20 * 1000);
        setTimeout(function() {
            window.location = "login.aspx";
        }, timeout);
    };
    function ResetSession() {
        //Redirect to refresh Session.
        window.location = window.location.href;
    }
    $(this).mousemove(function(e) {
        //Code goes here (Need help here)

    });
    $(this).keypress(function(e) {
        //Code goes here (Need help here)

    });

</script>

2 个答案:

答案 0 :(得分:1)

如果您要检测不活动状态并警告用户他将被注销,则可以执行以下操作:

工作中的jsfiddle:http://jsfiddle.net/newzy08/dun6gbvx/ 您可以结合使用sweetAlert弹出警告:http://jsfiddle.net/kbLqu1ah/21/

$(document).ready(function () {

                var time = 3000 ; //session timeout 3 seconds for the tests
                var timeout;
                var isLogout = false;

                timeout = setTimeout(function() {
                    //Things you need to do
                        isLogout = true; 
                        alert("logged out !");

                }, time);

                $(document).on('mousemove keypress', function () {
                    if (!isLogout) {
                        clearTimeout(timeout);
                        timeout = setTimeout(function() {
                            //Things you need to do
                             isLogout = true;
                             alert("logged out !");
                        }, time);
                    }
                });
            });

如果用户移动鼠标或按任意键,它将停止3秒钟的倒计时,然后重新启动... 如果3秒钟后没有任何活动,则将执行alert()代码

您可以使用库SweetAlert2在弹出窗口中显示一条漂亮消息,比照https://sweetalert2.github.io/ 带有倒计时消息的示例代码:http://jsfiddle.net/kbLqu1ah/4/

答案 1 :(得分:0)

您可以尝试的一件事是在if语句中花几秒钟的时间。例如:

 if(noMovement){
      seconds--;
      ...
 }

 $(this).mousemove(function(e) {
    noMovement=false;
});

$(this).keypress(function(e) {
    noMovement=false;
});