最近、不動産のフラッシュセール、共同購入用の電子商取引サイトを行いました(住宅のフラッシュセールもあります、価格は低くありません)、主に決定するためにフラッシュセールのカウントダウン表示があります現在時刻からフラッシュセール開始までの残り時間や、フラッシュセールの開始と終了を示すさまざまな表示があります。
最も重要な点は、いわゆる現在時刻には、ブラウザーが new Date() を通じて取得したクライアント時刻を使用できないということです。このように、ユーザーが自分のマシン時刻を変更している限り、カウントダウンは行われます。めちゃくちゃなので、現在時刻は次のようにする必要があります。 サーバー時刻が使用されるため、静的キャッシュページが使用されるため、現在時刻は ajax を使用して取得されます
< /title>
.
イベントの開始までまだ日があります:
.
フラッシュセールに参加してください! ! !
.
< ;script type= "text/javascript">
var msbegintime = "1323446400000"; //これはアクティビティ開始時のタイムスタンプです
var msendtime = "1325174400000" //これはアクティビティ開始時のタイムスタンプですopens
function start (){
callBackServerTime("sk_time", "wyz", msbegintime, msendtime);
}
//_showtimediv: 時間表示領域、_showqdiv: ステータス表示領域
//これはサーバーに送信されます。 ajax リクエストにより、サーバーはサーバーの現在のタイムスタンプを返します。つまり、xmlobj.responseText はサーバーのタイムスタンプです
関数 callBackServerTime(_showtimediv, _showqdiv, _ms_begintime, _ms_endtime) {
var now = new Date();
var urlstr = "random=" Math.round(Math.random() * 10000000);
var ajaxobj = new AJAXRequest // AJAX オブジェクトを作成します ajaxobj.method = "GET"; // リクエストメソッドは GET
ajaxobj.url = "/gz/source/getServerTime.do?" // ajax のクロスドメインの問題に注意してください。 🎜> ajaxobj.callback = function(xmlobj) {
//ShowQTime (xmlobj.responseText, _showtimediv, _showqdiv, _ms_begintime, _ms_endtime, _tryid,sourceid); j.responseText はテストに便利です
}
ajaxobj .send(); // リクエスト送信
}
//「フラッシュセール」時間の動的表示 function
function ShowQTime(_showtimediv, _showqdiv, _nowtime, _ms_begintime, _ms_endtime) {
_nowtime = Number (_nowtime);
var timmer = Math.floor((_ms_endtime - _nowtime) / (1000));
if (_nowtime >= _ms_begintime && timmer > 0) {;
// フラッシュセール進行中
document.getElementById(_showtimediv).innerHTML = "
0days
0hours
0分
0秒";
document.getElementById(_showqdiv).innerHTML = "
フラッシュセールが始まりました! ! !";
} else {
> var n D = Math.floor(nMS / (1000 * 60 * 60 * 24));
var nH = Math.floor(nMS / (1000 * 60 * 60 * 24)); Floor(nMS / (1000 * 60 * 60)) % 24;
var nM = Math.floor(nMS / (1000 * 60)) % 60;
var nS = Math.floor(nMS / 1000) % 60;
var nMS = Math.floor(nMS / 100) % 10;
if (nD >= 0) {
var _timestr = "";
var snd = nD.toString ();
if (snd.length == 1) {
snd = "0" snd;
}
_timestr = "
" (0, 1) snd.substring(1, 2) "day" ;
var snH = nH.toString();
if (snH.length == 1) {
snH = "0" snH;
}
_timestr = "
" snH.substring(0, 1) snH.substring(1, 2) "時間";
var snM = nM.toString();
.length == 1) {
1, 2) " minutes";
var snS = nS.toString ();
if (snS.length == 1) {
snS = "0" snS;
(_showtimediv).innerHTML = _timestr;
日
時間0分0秒";
document.getElementById(_showqdiv).innerHTML = " フラッシュ セールは終了しました。 ! ! ";
}
}
//注意 (_nowtime 1000) 增加 1 秒
setTimeout("ShowQTime('" _showtimediv "','" _showqdiv) "','" (_nowtime 1000) "','" _ms_begintime "','" _ms_endtime "')", 1000);
}
function AJAXRequest() {
var xmlObj = false;
var CBfunc,ObjSelf;
ObjSelf=this;
try { xmlObj=new XMLHttpRequest; }
catch(e) {
try { xmlObj=new ActiveXObject("MSXML2.XMLHTTP"); }
catch(e2) {
try { xmlObj=new ActiveXObject("Microsoft.XMLHTTP"); }
catch(e3) { xmlObj=false }
}
}
if (!xmlObj) return false;
this.method="POST";
this.url;
this.async=true;
this.content="";
this .callback=function(cbobj) {return;}
this.send=function() {
if(!this.method||!this.url||!this.async) return false;
xmlObj.open (this.method, this.url, this.async);
if(this.method=="POST") xmlObj.setRequestHeader("Content-Type","application/x-www-form- urlencoded");
xmlObj.onreadystatechange=function() {
if(xmlObj.readyState==4) {
if(xmlObj.status==200) {
ObjSelf.callback(xmlObj) ;
}
}
}
if(this.method=="POST") xmlObj.send(this.content);
else xmlObj.send(nu ll);
}
}