如果用户未提供任何响应,则关闭弹出窗口

时间:2012-08-26 17:27:34

标签: javascript asp.net

我实施了一个会话超时功能,如果没有30分钟的活动,将向用户显示弹出窗口(您的会话即将过期)。

需要帮助:

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

任何人都可以帮忙。

3 个答案:

答案 0 :(得分:0)

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

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

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

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

答案 1 :(得分: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
)

答案 2 :(得分:0)

您无法使用普通alert()框执行此操作,但至少有两个选项:

  1. 显示提醒,并注明会话将在显示后一分钟到期(可能会显示其到期的确切时间)。如果用户在时间结束后单击“确定”,它将返回并说“抱歉,您的会话已过期。”

  2. 自定义提醒框。这可以通过让元素覆盖屏幕而另一个显示信息非常容易地实现:

  3. 示例:

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

    您当然可以使用按钮等进一步自定义。 jQuery为此提供了一些库,但我在40行原始JavaScript中创建了一个完全可自定义的框(带有自定义文本和回调的无限按钮)。对他自己......