倒数计时器在任何用户活动(例如 onkeyup、鼠标移动等)上重置
Countdown timer reset on any user Activity (such as onkeyup, mouse move, etc..)
此代码在性质上类似于:
仅在选项卡处于活动状态时运行设置超时
但是,我在这里要完成的是,在文档上的任何用户活动上重置此 10 秒计时器。对于我的测试,我目前正在使用 keyup,但我还需要通过将鼠标移动到文档中的任何元素上等来做到这一点。
这是代码,请参阅注释代码以了解我将要进行的潜在更改,我将它们注释为,因为我发现它们不起作用:
$(function(){
//var keyed = false;
function myFunction() {
window.location.href="/backoffice/logout.jsp?forceClose=true";
}
(function() {
//Just under 15 min in milliseconds
//var time = 895000,
var time = 10000,
delta = 100,
tid;
tid = setInterval(function() {
if ( window.blurred ) { return; }
time -= delta;
//if ( keyed ) {
// time = 10000;
//}
//keyed = false;
if ( time <= 0 ) {
clearInterval(tid);
myFunction(); // time passed - do your work
}
}, delta);
})();
//window.onkeyup = function() { keyed = true; };
window.onblur = function() { window.blurred = true; };
window.onfocus = function() { window.blurred = false; };
});
当然,我不明白如何在实践中使其工作,但希望我的思维过程是清晰的,我正在尝试使活动选项卡也侦听按键或鼠标单击(甚至可能是鼠标移动),如果是这种情况,请重置计时器。
有人对此有任何建议吗?
您可以在任何操作上重新启动计时器,如下所示:
var tid = null;
function startTimeout() {
tid = setTimeout( // your code);
}
window.onkeyup = function() {
tid && clearTimeout(tid);
tid = startTimeout();
}
当使用 setTimeout 而不是 setInterval 时,您必须记住在完成后再次重新启动计时器:
function startTimeout() {
tid = setTimeout(function(){
// some code
// start timer again!
startTimeout();
}, 10000);
}
function myFunction() {
//window.location.href="/backoffice/logout.jsp?forceClose=true";
alert('hello world');
}
function listener() {
window.time = 10000,
delta = 100,
window.tid = setInterval(function() {
window.time -= delta;
console.log(window.time);
if ( time <= 0 ) {
clearInterval(window.tid);
myFunction(); // time passed - do your work
}
}, delta);
};
listener();
$(document).on('keyup keypress blur change mousemove',function(){
clearInterval(window.tid);
listener();
});
});
相关文章:
- 每当您在选择器内移动鼠标时,悬停功能就会重复
- D3.js:如何在svg上移动鼠标时创建弹出事件
- 为什么当我快速移动鼠标时,我的jQuery会崩溃
- 单击链接时加载移动鼠标光标 3-4 秒
- HTML 表在 TD 之间移动鼠标时触发鼠标输出
- 计算用户使用JS/Jquery滚动和移动鼠标的次数
- 如何使用JavaScript移动鼠标指针
- HTML5画布:如果在画布上移动鼠标时按下了鼠标按钮,则进行检测
- 通过jQuery或JS移动鼠标
- 引导程序 3 日期选取器 v4:移动鼠标时自动选择自定义周
- 无法检测在移动鼠标时按下的鼠标按钮
- 移动鼠标以触发CasperJS中的悬停事件
- 移动鼠标时更改视频的时间
- 当我按住鼠标按钮移动鼠标时,Fabric.js–元素是未定义的
- 当don't移动鼠标并在移动时出现
- 没有jquery的移动鼠标悬停事件
- 火狐在重型JS上崩溃,除非我移动鼠标
- jQuery点击事件只在移动鼠标后工作
- Javascript / jQuery在弹出窗口后检测悬停元素&不移动鼠标
- 如何绘制签名(点击,保持和移动鼠标)使用javascript