1

我实现了会话超时功能,如果 30 分钟内没有任何活动,用户会看到弹出窗口(您的会话即将到期)。

需要帮助:

当此弹出窗口打开并假设用户已锁定他的桌面并且不提供输入时。然后我想要的是 - 如果用户在 1 分钟内没有提供任何输入,那么这个弹出窗口将关闭并且新的弹出窗口将显示“会话已过期”

任何人都可以请帮忙。

4

3 回答 3

0

如果弹出窗口是由创建的window.open,那么你可以使用.close()这样的方法:

var popup = window.open('some url', 'name_of_the_window');
setTimeout(function(){
    popup.close();
}, 60000);

在这里,我只是在 1 分钟后关闭弹出窗口,没有任何输入检查,所以你需要以某种方式检查输入。

如果问题是关于如何检查输入,我可以提供另一个答案。

于 2012-08-26T17:32:37.227 回答
0

应该相当容易实现。使用动作监听器来检测用户动作。

var userActionDetected = false;
var x = document.getElementById('yourID');
x.onclick = function (){
    // some more stuff you wanna do 
    userActionDetected = true;
};
setTimeout(
    function() {
        if(!userActionDetected){
            //close popups etc.
        }
    },
    60000
)
于 2012-08-26T17:32:49.520 回答
0

你不能用普通的alert()盒子来做到这一点,但是至少有两个选项:

  1. 显示一个警报,并注明会话将在它出现后一分钟到期(可能显示它到期的确切时间)。如果用户在时间到后单击“确定”,它会返回并说“对不起,您的会话已过期”。

  2. 自定义警报框。这可以很容易地通过让一个元素覆盖屏幕并另一个显示信息来实现:

例子:

<div id="mask"><div id="alert">Your session will expire soon</div></div>
CSS:
#mask {
    position: fixed;
    left: 0; right: 0; top: 0; bottom: 0;
    /* fallback for browsers that don't support rgba() */
    background: #cccccc;
    background: rgba(255,255,255,0.75);
}
#alert {
    position: fixed;
    left: 50%;
    width: 200px;
    margin-left: -100px; /* half the width */
    top: 20%;
    background: white;
    color: black;
}

You can of course customise this further with buttons and so on. jQuery provides some libraries for this, but I made a fully-customisable box (unlimited buttons with custom text and callbacks) in just 40 lines of raw JavaScript. To each his own...

于 2012-08-26T17:34:21.450 回答