在注销前发出警告
Give warning before getting logged off
我希望在页面重定向和注销前 1 分钟弹出一个警报(警告)消息。任何帮助,将不胜感激。谢谢。
(function() {
var idleDurationSecs = 10 * 60;
var redirectUrl = 'logout.asp'; // Redirect idle users to this URL
var idleTimeout;
var resetIdleTimeout = function() {
if (idleTimeout) clearTimeout(idleTimeout);
idleTimeout = setTimeout(function() {
location.href = redirectUrl
}, idleDurationSecs * 1000);
};
resetIdleTimeout();
['click', 'touchstart', 'mousemove'].forEach(function(evt) {
document.addEventListener(evt, resetIdleTimeout, false)
});
})();
我个人认为不需要警告,如果有,简单的警告可能是不够的。最好是 div 倒计时。
但是,如果您设置为使用警报,则只需使用第二个超时。
var idleTimeout, warningTimeout;
var resetIdleTimeout = function () {
clearTimeout(idleTimeout);
clearTimeout(warningTimeout);
warningTimeout = setTimeout(function () {
alert("You will be logged out in 1 minute");
}, (idleDurationSecs-60) * 1000);
idleTimeout = setTimeout(function () {
location.href = redirectUrl
}, idleDurationSecs * 1000);
};
如果您想做一些质量更高的事情,这里是我会做的代码片段。忽略 CSS,我只是无聊让它看起来很漂亮。注意代码和HTML.
var n = 600; // 10 minutes
function countDown(){
var tm = setInterval(internalFunc,1000);
internalFunc();
function internalFunc(){
n--;
if(n == 0){
clearInterval(tm);
}
console.log(n);
document.getElementById('ElementIDhere123').innerHTML = n;
var date = new Date(null);
date.setSeconds(n); // specify value for SECONDS here
var result = date.toISOString().substr(11, 8);
document.getElementById('ElementIDhere123').innerHTML = result;
}
};
countDown();
#ElementIDhere123{
background:-webkit-radial-gradient(circle farthest-corner at right center, rgb(0, 151, 126) 0%, rgb(23, 95, 104) 80%);
background:-o-radial-gradient(circle farthest-corner at right center, rgb(0, 151, 126) 0%, rgb(23, 95, 104) 80%);
background:-moz-radial-gradient(circle farthest-corner at right center, rgb(0, 151, 126) 0%, rgb(23, 95, 104) 80%);
background:radial-gradient(circle farthest-corner at right center, rgb(0, 151, 126) 0%, rgb(23, 95, 104) 80%);
border-radius:15px;
-moz-border-radius:50px;
-webkit-border-radius:50px;
color:#C2F5FF;
text-align:center;
width: 90px;
}
<div id="ElementIDhere123">Timer Placeholder</div>
既然您询问了如何在用户注销时将时间放入通知用户的警报中。
function startTime(){
var today = new Date();
var h = today.getHours();
var m = today.getMinutes();
var ampm = h >= 12 ? ' PM' : ' AM';
hours = h % 12;
hours = h ? h : 12; // the hour '0' should be '12'
return [ h, m, ampm ].join(':')
}
(function () {
var idleDurationSecs = 10 * 1;
var warnDurationSecs = 9 * 1;
var redirectUrl = 'logout.asp'; // Redirect idle users to this URL
var idleTimeout;
var resetIdleTimeout = function () {
if (idleTimeout) clearTimeout(idleTimeout);
if (idleMsg) clearTimeout(idleMsg);
idleTimeout = setTimeout(function () {
alert('You were logged off at ' + startTime());
location.href = redirectUrl
}, idleDurationSecs * 1000);
idleMsg = setTimeout(function () {
alert("You will be logged out in 1 minute");
}, (warnDurationSecs) * 1000);
};
resetIdleTimeout();
['click', 'touchstart', 'mousemove'].forEach(function (evt) {
document.addEventListener(evt, resetIdleTimeout, false)
});
})();
我希望在页面重定向和注销前 1 分钟弹出一个警报(警告)消息。任何帮助,将不胜感激。谢谢。
(function() {
var idleDurationSecs = 10 * 60;
var redirectUrl = 'logout.asp'; // Redirect idle users to this URL
var idleTimeout;
var resetIdleTimeout = function() {
if (idleTimeout) clearTimeout(idleTimeout);
idleTimeout = setTimeout(function() {
location.href = redirectUrl
}, idleDurationSecs * 1000);
};
resetIdleTimeout();
['click', 'touchstart', 'mousemove'].forEach(function(evt) {
document.addEventListener(evt, resetIdleTimeout, false)
});
})();
我个人认为不需要警告,如果有,简单的警告可能是不够的。最好是 div 倒计时。
但是,如果您设置为使用警报,则只需使用第二个超时。
var idleTimeout, warningTimeout;
var resetIdleTimeout = function () {
clearTimeout(idleTimeout);
clearTimeout(warningTimeout);
warningTimeout = setTimeout(function () {
alert("You will be logged out in 1 minute");
}, (idleDurationSecs-60) * 1000);
idleTimeout = setTimeout(function () {
location.href = redirectUrl
}, idleDurationSecs * 1000);
};
如果您想做一些质量更高的事情,这里是我会做的代码片段。忽略 CSS,我只是无聊让它看起来很漂亮。注意代码和HTML.
var n = 600; // 10 minutes
function countDown(){
var tm = setInterval(internalFunc,1000);
internalFunc();
function internalFunc(){
n--;
if(n == 0){
clearInterval(tm);
}
console.log(n);
document.getElementById('ElementIDhere123').innerHTML = n;
var date = new Date(null);
date.setSeconds(n); // specify value for SECONDS here
var result = date.toISOString().substr(11, 8);
document.getElementById('ElementIDhere123').innerHTML = result;
}
};
countDown();
#ElementIDhere123{
background:-webkit-radial-gradient(circle farthest-corner at right center, rgb(0, 151, 126) 0%, rgb(23, 95, 104) 80%);
background:-o-radial-gradient(circle farthest-corner at right center, rgb(0, 151, 126) 0%, rgb(23, 95, 104) 80%);
background:-moz-radial-gradient(circle farthest-corner at right center, rgb(0, 151, 126) 0%, rgb(23, 95, 104) 80%);
background:radial-gradient(circle farthest-corner at right center, rgb(0, 151, 126) 0%, rgb(23, 95, 104) 80%);
border-radius:15px;
-moz-border-radius:50px;
-webkit-border-radius:50px;
color:#C2F5FF;
text-align:center;
width: 90px;
}
<div id="ElementIDhere123">Timer Placeholder</div>
既然您询问了如何在用户注销时将时间放入通知用户的警报中。
function startTime(){
var today = new Date();
var h = today.getHours();
var m = today.getMinutes();
var ampm = h >= 12 ? ' PM' : ' AM';
hours = h % 12;
hours = h ? h : 12; // the hour '0' should be '12'
return [ h, m, ampm ].join(':')
}
(function () {
var idleDurationSecs = 10 * 1;
var warnDurationSecs = 9 * 1;
var redirectUrl = 'logout.asp'; // Redirect idle users to this URL
var idleTimeout;
var resetIdleTimeout = function () {
if (idleTimeout) clearTimeout(idleTimeout);
if (idleMsg) clearTimeout(idleMsg);
idleTimeout = setTimeout(function () {
alert('You were logged off at ' + startTime());
location.href = redirectUrl
}, idleDurationSecs * 1000);
idleMsg = setTimeout(function () {
alert("You will be logged out in 1 minute");
}, (warnDurationSecs) * 1000);
};
resetIdleTimeout();
['click', 'touchstart', 'mousemove'].forEach(function (evt) {
document.addEventListener(evt, resetIdleTimeout, false)
});
})();