為什麼瀏覽器計時器會不準?線上倒數計時器如何保持準確
瀏覽器計時器之所以準確,是因為它會讀取時鐘,而不是數節拍。計時開始時先記下結束時間,之後每次畫面更新時,再用結束時間減去目前時間。節拍可能晚到,或在背景分頁中被放慢,但頁面每次檢查時,這個減法都是正確的。
線上計時器與碼表需要計時器或碼表?免費使用為什麼數節拍會不準
常見的計時器寫法,是每秒把計數器減一。瀏覽器會用重複計時器執行這個步驟,也就是每隔一段毫秒數呼叫一次函式。瀏覽器並不保證時間精確。頁面忙碌、裝置較慢或分頁被隱藏,都可能讓每個節拍延遲,而延遲會累積起來。每個節拍少算幾毫秒的計數器,過了幾分鐘就會明顯出錯。
隱藏分頁會發生什麼事
瀏覽器會放慢你沒有在看的分頁中的計時器,以節省電池與處理器資源。以 Chrome 為例,隱藏分頁中的重複計時器執行頻率會受到限制;如果分頁隱藏很久,這些計時器的執行次數可能會少很多。這樣的分頁中,計數器會落後,這也是為什麼靠數節拍的倒數計時會晚結束。
改為讀取時鐘
解決方法是記下計時開始的時間和應該結束的時間。瀏覽器提供高解析度時鐘 performance.now(),專門用來量測時間間隔。畫面更新時,計時器會用結束時間減去現在的時間,算出剩餘時間。更新較晚時,數字會暫時顯示稍微過時的結果,但下一次更新就會修正,因為計算並不取決於執行了多少次節拍。本站的線上計時器與碼表就是這樣運作的。
暫停時會記下剩餘時間。繼續時,則把新的結束時間設為現在時間加上剩餘時間,因此暫停不會影響計時。
頁面還會為倒數結束的那一刻設定一個計時器。即使畫面更新延遲,提示音也不必等到下一次畫面更新才響起。
為什麼顯示會無條件進位
倒數計時會把剩餘時間無條件進位到下一個整數秒。三秒的計時器在開始時顯示 00:03,接著顯示 00:02、00:01,結束時顯示 00:00。若改成無條件捨去,最後一秒就會直接顯示 00:00,讓人覺得提早了一秒。廚房計時器也是這樣顯示的。
聲音與螢幕
提示音是由瀏覽器的音訊系統產生,不需要下載任何音訊檔案。瀏覽器只允許在使用者於頁面上操作後播放聲音,因此音訊會在你按下開始時準備好。裝置的音量與靜音設定仍然有效。
螢幕喚醒鎖定是選用功能。瀏覽器支援時,頁面可以要求裝置在計時期間保持螢幕開啟。分頁隱藏時,瀏覽器會釋放這個鎖定,所以你回到頁面時,頁面會重新要求。
碼表的分段時間量測什麼
碼表會把它運作過的時間段加總起來,暫停時則停止加總。總時間是從開始到現在的時間,而分段時間是本次總時間與上一次分段時的總時間之差。第 1 段的時間等於第一次的總時間,第 2 段的時間等於第二次的總時間減去第一次的總時間。顯示上會到百分之一秒,但計時精度受限於裝置與瀏覽器,因此最後一位數請視為近似值。若你要計算的是上下班時間而非碼表,可以用工時計算機從時鐘時間算出總數,做法可參考跨夜班的工時怎麼算。
實用檢查
- 在烹飪或運動時依賴計時器之前,先用手錶測試一次短時間計時。測 30 秒就足以確認裝置的表現是否正常。
- 把音量調大,並確認裝置沒有開啟靜音。
- 分頁隱藏時,計時器仍會保持準確的時間,但關閉分頁或重新整理頁面會重設計時。
- 如果筆電在倒數途中進入睡眠,醒來後請檢查剩餘時間,因為睡眠期間的行為取決於裝置與瀏覽器。
在 fixmint 上的操作方式
- 選擇計時器,然後按下 5 分鐘這類預設時間,或輸入時、分、秒。
- 按下開始。你可以切換分頁,時間會保持正確。重新整理頁面則會重設計時器。
- 如果瀏覽器提供此選項,請勾選計時期間保持螢幕開啟。
- 若要計分段時間,請選擇碼表,按下開始,再於每次分段時按下分段。
- 在依賴計時器進行烹飪或運動之前,先用手錶測 30 秒。
特殊情況
- 時鐘變更。 倒數計時量測的是經過的時間,而不是牆上時鐘的時間,因此夏令時間的調整不會影響它。
- 長時間計時。 數小時的計時仍然準確,但請確認這段時間內裝置沒有進入睡眠。
- 同時使用多個計時器。 每個計時器都有各自的結束時間,因此開在兩個分頁中的兩個計時器不會互相干擾。
快速解答
為什麼計時器在背景分頁中會延遲? 瀏覽器會放慢隱藏分頁中的重複計時器,因此靠數節拍的計時器會落後。會讀取時鐘的計時器則不受影響。
回到分頁時,計時還會正確嗎? 會。計時器會根據儲存的結束時間顯示剩餘時間。
分段時間與總時間有什麼不同? 分段時間是距離上一次分段的時間,總時間則是從碼表開始計時到現在的時間。
借助 AI 協助,由英文原文翻譯而成。
留言
還沒有留言,搶先留言吧。


