2012-03-18 278 views
4

セッションタイムアウトが期限切れに近づいていることをユーザーに警告したいと思います。私は、OKボタンでポップアップを表示し、ポップアップを数秒間表示します。私はちょうどJavaスクリプトでこれを行うことはできますか? Im C#コードを使用してもOKです。セッションタイムアウトのjavascriptカウントダウンタイマー

今すぐセッションのタイムアウトを検出し、セッションの有効期限が切れたことを知らせるポップアップが表示されます。

<script type="text/javascript"> 

var sessionTimeout = "<%= Session.Timeout %>"; 

function DisplaySessionTimeout() { 

sessionTimeout = sessionTimeout - 1; 

if (sessionTimeout >= 0) 

    window.setTimeout("DisplaySessionTimeout()", 60000); 

else 
{ 
alert("Your current Session is over due to inactivity."); 
} 
} 


</script> 
+0

このスクリプトは、ユーザーがアプリケーション上の何かをクリックした場合、または銀行ウェブサイトのようなタイムアウトを自動的に検出した場合にのみ機能しますか? – alice7

答えて

5

はい、あなたはJavaScriptでこれを行うことができます。

function Counter(options) { 
    var timer; 
    var instance = this; 
    var seconds = options.seconds || 10; 
    var onUpdateStatus = options.onUpdateStatus || function() {}; 
    var onCounterEnd = options.onCounterEnd || function() {}; 
    var onCounterStart = options.onCounterStart || function() {}; 

    function decrementCounter() { 
     onUpdateStatus(seconds); 
     if (seconds === 0) { 
      stopCounter(); 
      onCounterEnd(); 
      return; 
     } 
     seconds--; 
    }; 

    function startCounter() { 
     onCounterStart(); 
     clearInterval(timer); 
     timer = 0; 
     decrementCounter(); 
     timer = setInterval(decrementCounter, 1000); 
    }; 

    function stopCounter() { 
     clearInterval(timer); 
    }; 

    return { 
     start : function() { 
      startCounter(); 
     }, 
     stop : function() { 
      stopCounter(); 
     } 
    } 
}; 

を...そして、それを使用する方法の例:ここでは、単純なカウンタの実装that was inspired from this StackOverflow answerだ私はしばらく前に見つけ

var countdown = new Counter({ 
    // number of seconds to count down 
    seconds: 3, 

    onCounterStart: function() { 
     // show pop up with a message 
     ... 
    }, 

    // callback function for each second 
    onUpdateStatus: function(second) { 
     // change the UI that displays the seconds remaining in the timeout 
     ... 
    }, 

    // callback function for final action after countdown 
    onCounterEnd: function() { 
     // show message that session is over, perhaps redirect or log out 
     ... 
    } 
}); 
countdown.start(); 

サーバがユーザに警告する準備ができたら、ちょうど作成しますタイマーがカウントダウンを開始します。各イベントで何が起きるかをカスタマイズすることができます。タイマーが開始されたとき、秒が1秒ごとに、カウントダウンが完了したときにカスタマイズできます。

0

setTimeoutの代わりにsetIntervalを使用することをおすすめします。このような

何か:

<script> 
var startTime = new Date(milliseconds), 
    timeoutLength = 60000; 

var interval = setInterval("checkTimeout()",1000); 
function checkTimeout() { 
    var currentTime = new Date(millisecond); 
    if (currentTime > startTime + timeoutLength) { 
     clearInterval(interval); 
     alert ("Your current Session is over due to inactivity."); 
    } 
} 
</script> 
+0

この機能を呼び出すには、ページ読み込みからこの関数を呼び出す必要がありますか?もしそうなら、どうですか? –

+0

これを追加する場所とこれがどのくらい正確かについての情報を少し追加してください。 'milliseconds'は例外をスローします。 –

関連する問題