Javascript 需要在30秒后或关闭浏览器后清除会话并注销用户

Javascript 需要在30秒后或关闭浏览器后清除会话并注销用户,javascript,jquery,asp.net-mvc,Javascript,Jquery,Asp.net Mvc,代码在MVC中,而且每个请求都使用ajax调用,所以url没有变化 使用下面的代码,我将能够执行首次操作,即如果用户30秒不活动,则注销用户。但在用户注销时无法执行操作 <script> $(function () { $("body").on('click keypress', function () { ResetThisSession(); }); }); var timeInSecondsAfte

代码在MVC中,而且每个请求都使用ajax调用,所以url没有变化

使用下面的代码,我将能够执行首次操作,即如果用户30秒不活动,则注销用户。但在用户注销时无法执行操作

<script>
    $(function () {
        $("body").on('click keypress', function () {
            ResetThisSession();
        });
    });
    var timeInSecondsAfterSessionOut = 30; // to change the session time out, change this value. Must be in seconds.
    var secondTick = 0;
    function ResetThisSession() {
        secondTick = 0;
    }
    function StartThisSessionTimer() {
        secondTick++;
        console.log(secondTick);
        if (secondTick > timeInSecondsAfterSessionOut) {
            clearTimeout(tick);
            window.location = '/Account/LogOff/0';
        }
        tick = setTimeout("StartThisSessionTimer()", 1000);
    }
    StartThisSessionTimer(); 
</script>

$(函数(){
$(“正文”)。在('单击按键',函数(){
重置此会话();
});
});
var timeInSecondsAfterSessionOut=30;//要更改会话超时,请更改此值。必须在几秒钟内完成。
var=0;
函数ResetThisSession(){
secondTick=0;
}
函数StartThisSessionTimer(){
secondTick++;
console.log(secondTick);
如果(第二次勾选>时间InSecondSafterSessionOut){
清除超时(滴答声);
window.location='/Account/LogOff/0';
}
tick=setTimeout(“starttthissessiontimer()”,1000);
}
开始此会话计时器();
我还尝试了脚本的卸载卸载前方法,但结果不符合预期

如果用户在30秒内未执行任何操作或用户关闭浏览器,则需要注销用户


提前感谢。

正如我看到的,var tick是本地的,并且在每个tick中定义,因此每秒调用一次超时:

function StartThisSessionTimer() {
             secondTick++;
             console.log(secondTick);
             if (secondTick > timeInSecondsAfterSessionOut) {
                 clearTimeout(tick);
                 window.location = '/Account/LogOff/0';
             }
             tick = setTimeout("StartThisSessionTimer()", 1000);
         }
尝试将超时的初始化项分开,在超时的重复器的相同范围之外。 告诉我们是否有用

Tks