淘宝电器的限时团购的时间是怎么做出来的? 网址:http://3c.taobao.com/怎么精确到毫秒,还有他好像不是用计时器做的,因为几乎没占CPU,如果用JS的计时器会很占CPU的 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 应该是js做的,禁用页面的js脚本,计数器就不动了。没有占cpu不能说明不是js做的 的确是Js可是我看了一下午没明白原理!!!(function(){ var U = YAHOO.util,Dom = U.Dom,Event = U.Event, dataCon = Dom.get('J_saleCountdown'); if(!dataCon) return; var bar = Dom.get('J_JoinBar'), show = Dom.get('J_JoinNum'), endTime = dataCon.getAttribute('data-startTime'), startTime = dataCon.getAttribute('data-beginTime'), serveTime = dataCon.getAttribute('data-serveTime'), sellerId = dataCon.getAttribute('data-sellerId'), auctionId = dataCon.getAttribute('data-auctionId'), lowest = dataCon.getAttribute('data-lowest')>>0, already=Dom.get("J_Already"), price=Dom.get("J_Price"); function process(num){ if(num >= 0){ already.innerHTML="<span>已团:<strong>"+num+"</strong>人</span><span >(最低人数:"+lowest+")</span>" }else{ disable('系统异常,请重试'); already.innerHTML="<span >(最低人数:"+lowest+")</span>" } } function dateFormat(d){ var d1=d.match(/^(\d{4})-(\d{1,2})-(\d{1,2}) (\d{1,2}):(\d{1,2}):(\d{1,2})/); var d2=new Date(); d2.setFullYear(d1[1],d1[2]-1,d1[3]); d2.setHours(d1[4],d1[5],d1[6]); return d2; } function timeDis(d1,d2){ if(!d1)d1 = dateFormat(endTime).getTime(); if(!d2)d2 = dateFormat(serveTime).getTime(); return d1 - d2; } function disable(str){ str = str || '团购结束'; bar.innerHTML ="" Dom.get("J_Count_title").style.textIndent="-1000em" Dom.get("sale-countdown").innerHTML=str Dom.addClass(bar,'timeout'); bar.setAttribute('href','javascript:void(0);'); } function base64encode(str) { str = utf16to8(str); var out, i, len; var c1, c2, c3; var base64EncodeChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; len = str.length; i = 0; out = ""; while(i < len) { c1 = str.charCodeAt(i++) & 0xff; if(i == len){ out += base64EncodeChars.charAt(c1 >> 2); out += base64EncodeChars.charAt((c1 & 0x3) << 4); out += "=="; break; } c2 = str.charCodeAt(i++); if(i == len) { out += base64EncodeChars.charAt(c1 >> 2); out += base64EncodeChars.charAt(((c1 & 0x3)<< 4) | ((c2 & 0xF0) >> 4)); out += base64EncodeChars.charAt((c2 & 0xF) << 2); out += "="; break; } c3 = str.charCodeAt(i++); out += base64EncodeChars.charAt(c1 >> 2); out += base64EncodeChars.charAt(((c1 & 0x3)<< 4) | ((c2 & 0xF0) >> 4)); out += base64EncodeChars.charAt(((c2 & 0xF) << 2) | ((c3 & 0xC0) >>6)); out += base64EncodeChars.charAt(c3 & 0x3F); } return out; } function utf16to8(str) { var out, i, len, c; out = ""; len = str.length; for(i = 0; i < len; i++) { c = str.charCodeAt(i); if ((c >= 0x0001) && (c <= 0x007F)) { out += str.charAt(i); } else if (c > 0x07FF) { out += String.fromCharCode(0xE0 | ((c >> 12) & 0x0F)); out += String.fromCharCode(0x80 | ((c >> 6) & 0x3F)); out += String.fromCharCode(0x80 | ((c >> 0) & 0x3F)); } else { out += String.fromCharCode(0xC0 | ((c >> 6) & 0x1F)); out += String.fromCharCode(0x80 | ((c >> 0) & 0x3F)); } } return out; } function init(){ var timer,uri; if(timeDis()>0){ var dEnd = dateFormat(endTime).getTime(); var dCur = dateFormat(serveTime).getTime(); timer = setInterval(function(){ if(timeDis(dEnd,dCur += 1000)<= 0 ){ disable(); clearInterval(timer); } },1000); uri = 'http://tbskip.taobao.com/json/group_auction.htm?auctionId={auctionId}&nick={sellerId}&startTime={startTime}&endTime={endTime}'; uri = uri.replace('{auctionId}',auctionId).replace('{sellerId}',base64encode(sellerId)).replace('{startTime}',startTime).replace('{endTime}',endTime) + '&t=' + new Date().getTime(); U.Get.script(uri,{ onSuccess:function(){ if(typeof DigiGroup == 'undefined') return; process(DigiGroup.current>>0); delete DigiGroup; } }); }else{ disable(); } } init(); })() 新手jquery问题 图片循环滚动 请教EasyUI框架? navigator.browserLanguage的问题 jquery each使用 js 递归 在线等 Jquery在IE8和FF下正常,在IE7和IE6报错。 求教js捕获关闭浏览器的时间的代码 如何仅通过JS代码实现目标图片的转动(类似于轮盘)? ie8下 fixdetailrowheight 对于 detailview 不起作用?求解 挑战!能否用js语句得到ie收藏夹中的收藏链接? 没有mac,但是要测试mac下的FF,有什么办法吗? jquery获取特定ID的DIV下所有的INPUT
没有占cpu不能说明不是js做的
可是我看了一下午没明白原理!!!
(function(){
var U = YAHOO.util,Dom = U.Dom,Event = U.Event,
dataCon = Dom.get('J_saleCountdown');
if(!dataCon) return; var bar = Dom.get('J_JoinBar'),
show = Dom.get('J_JoinNum'),
endTime = dataCon.getAttribute('data-startTime'),
startTime = dataCon.getAttribute('data-beginTime'),
serveTime = dataCon.getAttribute('data-serveTime'),
sellerId = dataCon.getAttribute('data-sellerId'),
auctionId = dataCon.getAttribute('data-auctionId'),
lowest = dataCon.getAttribute('data-lowest')>>0,
already=Dom.get("J_Already"),
price=Dom.get("J_Price");
function process(num){ if(num >= 0){
already.innerHTML="<span>已团:<strong>"+num+"</strong>人</span><span >(最低人数:"+lowest+")</span>" }else{
disable('系统异常,请重试');
already.innerHTML="<span >(最低人数:"+lowest+")</span>"
}
} function dateFormat(d){
var d1=d.match(/^(\d{4})-(\d{1,2})-(\d{1,2}) (\d{1,2}):(\d{1,2}):(\d{1,2})/);
var d2=new Date();
d2.setFullYear(d1[1],d1[2]-1,d1[3]);
d2.setHours(d1[4],d1[5],d1[6]);
return d2;
} function timeDis(d1,d2){
if(!d1)d1 = dateFormat(endTime).getTime();
if(!d2)d2 = dateFormat(serveTime).getTime();
return d1 - d2;
} function disable(str){
str = str || '团购结束';
bar.innerHTML =""
Dom.get("J_Count_title").style.textIndent="-1000em"
Dom.get("sale-countdown").innerHTML=str
Dom.addClass(bar,'timeout');
bar.setAttribute('href','javascript:void(0);');
}
function base64encode(str)
{
str = utf16to8(str);
var out, i, len;
var c1, c2, c3;
var base64EncodeChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
len = str.length;
i = 0;
out = "";
while(i < len)
{
c1 = str.charCodeAt(i++) & 0xff;
if(i == len){
out += base64EncodeChars.charAt(c1 >> 2);
out += base64EncodeChars.charAt((c1 & 0x3) << 4);
out += "==";
break;
}
c2 = str.charCodeAt(i++);
if(i == len)
{
out += base64EncodeChars.charAt(c1 >> 2);
out += base64EncodeChars.charAt(((c1 & 0x3)<< 4) | ((c2 & 0xF0) >> 4));
out += base64EncodeChars.charAt((c2 & 0xF) << 2);
out += "=";
break;
}
c3 = str.charCodeAt(i++);
out += base64EncodeChars.charAt(c1 >> 2);
out += base64EncodeChars.charAt(((c1 & 0x3)<< 4) | ((c2 & 0xF0) >> 4));
out += base64EncodeChars.charAt(((c2 & 0xF) << 2) | ((c3 & 0xC0) >>6));
out += base64EncodeChars.charAt(c3 & 0x3F);
}
return out;
}
function utf16to8(str) {
var out, i, len, c;
out = ""; len = str.length;
for(i = 0; i < len; i++)
{
c = str.charCodeAt(i);
if ((c >= 0x0001) && (c <= 0x007F))
{
out += str.charAt(i);
} else if (c > 0x07FF) {
out += String.fromCharCode(0xE0 | ((c >> 12) & 0x0F));
out += String.fromCharCode(0x80 | ((c >> 6) & 0x3F));
out += String.fromCharCode(0x80 | ((c >> 0) & 0x3F));
} else {
out += String.fromCharCode(0xC0 | ((c >> 6) & 0x1F));
out += String.fromCharCode(0x80 | ((c >> 0) & 0x3F));
}
}
return out;
} function init(){ var timer,uri; if(timeDis()>0){
var dEnd = dateFormat(endTime).getTime();
var dCur = dateFormat(serveTime).getTime();
timer = setInterval(function(){
if(timeDis(dEnd,dCur += 1000)<= 0 ){
disable();
clearInterval(timer);
}
},1000); uri = 'http://tbskip.taobao.com/json/group_auction.htm?auctionId={auctionId}&nick={sellerId}&startTime={startTime}&endTime={endTime}';
uri = uri.replace('{auctionId}',auctionId).replace('{sellerId}',base64encode(sellerId)).replace('{startTime}',startTime).replace('{endTime}',endTime) + '&t=' + new Date().getTime();
U.Get.script(uri,{
onSuccess:function(){
if(typeof DigiGroup == 'undefined') return;
process(DigiGroup.current>>0);
delete DigiGroup;
}
});
}else{
disable();
}
}
init();
})()