X时间不活动后显示警告,并在X + Y时间javascript后退出

时间:2017-02-28 10:50:47

标签: javascript jsp user-interface session-timeout

我见过许多类似这个问题的答案。没有人帮我解决这个问题。 问题 - 我希望在5分钟不活动后显示警告消息,如果用户在发出5分钟警告后仍处于非活动状态,则Page应自动重定向到logoff.jsp。 我不想在这里使用Jquery。它必须只使用Javascript完成。 帮助!!

var IDLE_TIMEOUT = 15; //seconds
 var _idleSecondsCounter = 0;

 document.onkeypress = function() 
 {
    _idleSecondsCounter = 0;
 };
 document.onclick = function() 
 {
    _idleSecondsCounter = 0;
 };
 document.onmousemove = function()
 {
    _idleSecondsCounter = 0;
 };

 window.setInterval(CheckIdleTime, 1000);

 function CheckIdleTime() {
    _idleSecondsCounter++;
    var oPanel = document.getElementById("SecondsUntilExpire");
    if (oPanel)
        oPanel.innerHTML = (IDLE_TIMEOUT - _idleSecondsCounter) + "";
    if (_idleSecondsCounter >= IDLE_TIMEOUT) {
        var answer = confirm("It's been long time you are idle.\nPlease click OK to continue session.\nTo close this session click Cancel.");
        if (answer) 
        {
            //document.location.href = "logout.html";   
            _idleSecondsCounter=0;
        }
        else{
            //window.open('', '_self', ''); window.close();
            document.location.href = "logoff.jsp";
        }

    }
 }

1 个答案:

答案 0 :(得分:0)

啊,您无法以编程方式关闭alert()confirm()或这些模式。如果你想这样做的话,你可以制作自己的盒子。

当您显示confirm()时,您的JS执行会自动暂停。因此,您需要使用HTML / CSS创建自定义对话框。

function tempAlert(msg,duration)
{
    var el = document.createElement("div");
    el.setAttribute("style","position:absolute;top:40%;left:20%;background-color:white;");
    el.innerHTML = msg;
    setTimeout(function(){
        el.parentNode.removeChild(el);
        // 5 minutes over. sign off user
    },duration);
    document.body.appendChild(el);
}

tempAlert("We're signing you off in 5 minutes",5*60000);