家伙! 我正在开发一个有时间限制的在线拍卖。
结束时间段仅适用于一次展开的拍卖。
登录网站后,我会显示公开竞价的剩余时间。时间以这种方式计算:
EndDateTime =拍卖结束的日期和时间;
DateTime.Now()=当前日期和时间
timeLeft= (EndDateTime - DateTime.Now()).Seconds()
。
在javascript中,我更新了剩下的时间:
timeLeft=timeLeft-1
问题在于,当我从不同的浏览器同时登录时,浏览器会显示不同的倒计时。
请帮帮我!
答案 0 :(得分:1)
我想由于服务器处理时间和下载页面所需的时间,总会有几秒钟的差异。
最好的方法是实际将结束时间发送到浏览器并计算javascript中的剩余时间。这样的时间应该是相同的(当然在同一台机器上)。
答案 1 :(得分:1)
罗马,
我看了一下eBay(他们对这个东西知道了一两件事:))并注意到一旦项目在最后90秒内,GET请求每2秒被触发一次以更新变量javascript通过json响应。你可以看看这个内部的firebug / fiddler看看它做了什么。
这是一个它拉下来的json的例子:
{
"ViewItemLiteResponse":{
"Item":[
{
"IsRefreshPage":false,
"ViewerItemRelation":"NONE",
"EndDate":{
"Time":"12:38:48 BST",
"Date":"01 Oct, 2010"
},
"LastModifiedDate":1285932821000,
"CurrentPrice":{
"CleanAmount":"23.00",
"Amount":23,
"MoneyStandard":"£23.00",
"CurrencyCode":"GBP"
},
"IsEnded":false,
"AccessedDate":1285933031000,
"BidCount":4,
"MinimumToBid":{
"CleanAmount":"24.00",
"Amount":24,
"MoneyStandard":"£24.00",
"CurrencyCode":"GBP"
},
"TimeLeft":{
"SecondsLeft":37,
"MinutesLeft":1,
"HoursLeft":0,
"DaysLeft":0
},
"Id":160485015499,
"IsFinalized":false,
"ViewerItemRelationId":0,
"IsAutoRefreshEnabled":true
}
]
}
}
您可以在代码中执行类似操作。
[edit] - 在进一步查看eBay代码时,尽管它只在最近90秒内运行密集的GET请求,但在页面最初加载时会添加与上面相同的json好。然后,在3分钟左右,GET请求每10秒运行一次。因此,我假设对该结构运行相同的javascript,无论是否> 90秒。
答案 2 :(得分:0)
这可能是javascript以不同速度加载的问题, 或者setInterval将在稍微不同的时间触发,具体取决于循环
我会调查这两个