我正在由外部供應商為客戶維護的網站上除錯一些登錄/注銷問題,希望標題能說明問題,但更多詳細資訊如下。
據我了解,在 Chrome 的隱藏選項卡中運行的任何 JavaScript 都會將 any 的值更改setTimeout為 1000 毫秒,以保持整體系統性能而不浪費資源。如本網站所述:
“瀏覽器正是這樣做的。對于非活動選項卡,它們會自動限制計時器每 1 秒運行一次,而不管代碼中指定的原始延遲如何。例如,如果代碼最初使用 setInterval() 每隔 50 毫秒運行一些代碼,一旦將應用程式移動到后臺選項卡,間隔自動變為 1000 毫秒(1 秒)。”
setTimeout對于設定為低于 1,000 毫秒(如 50 毫秒等)的值,這絕對是有意義的。但是高于 1,000 毫秒的值呢?
setTimeout即使 900,000 毫秒(又名:900 秒,又名:15 分鐘)明顯高于此值, Chrome是否會將值設定為 1,000 毫秒?
這是來自供應商網頁的一段代碼,我認為這會導致我試圖協助除錯的問題。它在隱藏選項卡中時不起作用。
function keepSessionAlive() {
if (externalAdminWindow && externalAdminWindow.closed) {
externalAdminWindow = null;
}
if (externalFGWindow && externalFGWindow.closed) {
externalFGWindow = null;
}
if (externalAdminWindow || externalFGWindow) {
$find("ctl00_RadAjaxManager1").ajaxRequest("KeepAlive");
setTimeout(function() {
keepSessionAlive();
}, 900000);
}
}
uj5u.com熱心網友回復:
大多數瀏覽器會在非活動選項卡中限制超時。這意味著 allsetTimeout將有至少 1000 毫秒的超時。比這更長的一切都應該按預期作業。因此,回答您的問題,15 分鐘超時不應受到影響。
查看MDN 上非活動選項卡中setTimeout的超時部分: https ://developer.mozilla.org/en-US/docs/Web/API/setTimeout#timeouts_in_inactive_tabs
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/459642.html
標籤:javascript 谷歌浏览器 标签 设置超时 设置间隔
