2012-08-26 28 views
1

我有一个会话超时功能来实现,其中用户呈现弹出窗口(即会话即将到期)的情况下,没有活动为30-完成分钟。关闭弹出,如果用户不提供任何响应

需要帮助的:

当这个弹出打开,让用户说已锁定他的桌面,并且不提供输入。那么我想要的是 - 如果用户没有在1分钟提供任何输入,则此弹出将关闭,新弹出的窗口将显示“Session是exprired”

任何人都可以请帮助。

+0

jQuery可用? – Peter

回答

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 
) 
0

如果弹出菜单已经被window.open创建的,那么你可以可以只使用这样.close()方法:

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

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

如果问题是有关如何检查的投入,我可以提供另一种答案。

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

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

+0

但谁说警报框?他谈到了弹出式窗口 – haynar

+0

好吧,很多用户都会打电话给'alert'弹出框,因为弹出窗口。 –

+0

是的,也许你是对的,但我认为你应该在发布答案之前提出要求,因为你的答案可能会因为不适当而收到反对票 – haynar