2012-08-26 51 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