我試圖創建基於服務器上的時間的倒計時器。使用服務器時間的JavaScript倒數計時器
我最初有服務器設置剩餘時間,只是做了1秒setTimeout
這會減少時間。
我發現了兩個問題與此:
- 沒有從服務器設置的時間,直到客戶端的網頁渲染和JavaScript開始運行滯後。滯後量取決於用戶互聯網連接和計算機/ JavaScript引擎的速度。
- 我認爲1秒鐘的
setTimeout
可能已經在較慢的電腦上稍稍落後了。
我改變了它,服務器會設置結束時間,並且客戶端上的JavaScript需要時間(UTC)並計算剩餘的剩餘時間。然後它會在每個setTimeout
回調中執行此操作。這使得時間和倒計時完美。如果客戶端具有快速的計算機/ JavaScript引擎,則計時器停留在頁面上。如果計算機/ JavaScript引擎速度較慢,您可能會看到第二個被跳過,但時間永遠不會關閉。
我發現1個問題,到目前爲止這種方法:
- 每個客戶端的時鐘可能會有所不同。
因此,如果客戶端計算機上的時間不正確,則剩下的時間可能會持續幾秒或30秒,甚至可能休息幾天。
有沒有一種方法可以讓我根據服務器的結束日期確切地確定時間?