我想在移动鼠标或按键时停止计时器。这是我到目前为止所掌握的,并且可以通过倒计时来实现。我不确定需要做什么才能停止时间。 (代码来自此页面: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>
答案 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;
});