0
我正在尋找一個拍賣網站的倒計時器,當用戶更改他們的本地計算機時鐘時不會更改。拍賣網站的PHP/jquery倒數計時器
我已經使用Keith Woods進行服務器同步,但是想知道是否有人對任何其他人有過任何經驗,因爲即使腳本在用戶更改時鐘時發生了變化。
我想像eBay一樣。
乾杯
我正在尋找一個拍賣網站的倒計時器,當用戶更改他們的本地計算機時鐘時不會更改。拍賣網站的PHP/jquery倒數計時器
我已經使用Keith Woods進行服務器同步,但是想知道是否有人對任何其他人有過任何經驗,因爲即使腳本在用戶更改時鐘時發生了變化。
我想像eBay一樣。
乾杯
取決於你想如何準確(毫秒等),這是一個簡單的setInterval
在您的倒計時功能,可以一定程度上得到準確的結果(Doc),並不能由一個人改變他們的時鐘被改變。
由於此方法依賴於javascript執行,因此可能會延遲頁面加載速度或其他導致其不同步的情況。但是,如果你每隔一分鐘左右對網絡服務器進行一次AJAX調用,就可以重新同步客戶端上的時間,以確保沒有發生明顯的延遲。
所以乾脆:
var currentTime = [6,50,20]; //[Hours,Minutes,Seconds]
var intervalId;
function updateTime()
{
currentTime[2]--;
if (currentTime[0] == 0 && currentTime[1] == 0 && currentTime[2] == 0)
{
clearInterval(intervalId);
//do your processing of countdown end here
}
if (currentTime[2] == -1)
{
currentTime[2] = 59;
currentTime[1]--;
}
if (currentTime[1] == -1)
{
currentTime[1] = 59;
if (currentTime[0] > 1)
{
currentTime[0]--;
}
}
//do your processing of current time here (ie. display on screen)
}
//Use this function as the callback to an AJAX request to the server
//This will sync the time correctly
function ajaxCurrentTime(AJAXResponse)
{
//For this example, we will say the AJAXResponse is a JSON string
currentTime = JSON.parse(AJAXResponse);
}
intervalId = setInterval(updateTime,1000);
我將是第一個承認這是不是因爲在大多數但不接觸的日期/時間的幾秒鐘潛在的不準確的完美解決方案客戶機不會因爲他們改變時間而受到影響。
我提供的代碼不包括實際進行AJAX通信的部分,只是它的回調。這只是一個可以實現的方式的例子,沒有真正的錯誤檢查,並且可能有其他我沒有注意到的問題,可以用它作爲指導。