サンプルアプリケーションを作成しています。ユーザーサインアウト時間は15分です。 2分前に、ユーザーはカウントダウンで警告メッセージをポップアップします。 2つのボタンがあります。ボタンをクリックして別の関数呼び出しからsetTimeoutカウンタを停止する方法
1)ログアウト=>ログアウト。
2)StayLogin =>アプリケーションにさらに15分の時間を与えます。
初めてユーザーが13分に達すると、ポップアップが表示されます。
[進む]ボタンをクリックすると、ログアウト時間が追加されます。
問題:
カウンタに問題があります。カウンタが0秒0分に達すると、ログインページにリダイレクトされます。
カウンタの間で、ユーザーがクリックしてさらに15分を追加しましたが、タイマーは0秒に達してログインページに移動します。
function countdown(minutes) {
var seconds = 60;
var mins = minutes
function tick() {
var counter = document.getElementById("timer");
var current_minutes = mins - 1
seconds--;
counter.innerHTML =
current_minutes.toString() + ":" + (seconds < 10 ? "0" : "") + String(seconds);
if (seconds === 0) {
$state.go("root"); // problem
}
if (seconds > 0) {
setTimeout(tick, 1000);
} else {
if (mins > 1) {
alert('minutes');
// countdown(mins-1); never reach “00″ issue solved:Contributed by Victor Streithorst
setTimeout(function() {
countdown(mins - 1);
}, 1000);
}
}
}
tick();
}
countdown(1); * *
// staylogin
$rootScope.proceed = function() {
var lastDigestRun = Date.now();
var s = lastDigestRun + 3 * 60 * 1000;
var displaytime = now - lastDigestRun > 3 * 60 * 1000;
if (now - lastDigestRun > 2 * 60 * 1000) {
clearTimeout(tick);
load();
}
}
stayLoginボタンをクリックするとカウンターを停止する方法はありますか?
の可能性のある重複した[のsetTimeoutループを停止する方法?](http://stackoverflow.com/questions/8443151/how-to-stop-a-settimeout-loop) – Dekel
@Dekel私はClearTimeoutを設定し、バックグラウンドでカウンタが動作している場合、何も動作しないボタンコールで特定の関数に対してfalseを返します。 –
あなたはしましたが、正しく使用していません:)他の投稿を確認してください – Dekel