在注销前发出警告

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)
    });
})();