alert()
是一個模式,它停止JavaScript執行。檢查驗證碼:
var start = new Date();
var start2;
window.setTimeout(function() {
var end = new Date();
var result = "time from start: " + (end.getTime() - start.getTime())
result += "\ntime from alert: " + (end.getTime() - start2.getTime())
result += "\nalert was open for: " + (start2.getTime() - start.getTime())
alert(result);
}, 500);
window.setTimeout(function() {
alert("hello");
start2 = new Date();
}, 100);
搗鼓上代碼:http://jsfiddle.net/aorcsik/vfeH2/1/
看看這個代碼,它表明,即使setTimeout的期間alert()
停止,但你可以檢查用戶有多少時間看警報,並通過減少測量時間除以您的行情延遲來更新您的櫃檯(timeLeft
)。因此,我的解決方案是測量用戶查看警報模式的時間,只要他點擊確定,檢查他的會話是否結束,如果是重定向到註銷,或者執行通常的重定向。
var start = new Date();
alert("xxx");
var t = (new Date()).getDate() - start.getDate();
if (t/1000 > timeLeft) {
/* logout */
} else {
/* redirect */
}
注:另一種解決方案是,如果你想要一個異步警報使用一些HTML彈出窗口,而不是JavaScript警告,這不會阻止JavaScript執行
'setTimeout(checkTime,1000)'? – Bergi
在reload()之前保存timeleft在localstorage中,然後從那裏加載它代替第一個任務 – fcalderan
請澄清你的問題?它在重新加載後捕獲(timeleft)?或者你正面臨着警報信息的問題?你的問題在某種程度上含糊不清:) – stackunderflow