红米手机抢购的js代码


Posted in Javascript onMarch 10, 2014

以下就是小米抢购时的JS代码,分析一下就可以用它实现一个红米抢购软件,大家根据这个代码实现自己想要的功能吧!

hdcontrol({"stime":1381645438,"status":{"allow":false,"miphone":{"hdstart":false,"hdstop":false,"hdurl":"","duration":null},"mibox":{"hdstart":false,"hdstop":false,"hdurl":"","duration":null}}})
function forNum(a){
return 10>a?"0"+a:a
}
function countdown(a,b){
varc=newDate(b).getTime()/1e3,
d=c-a,
e=parseInt(d%60),
f=parseInt(d/60%60),g=parseInt(d/3600%24),
h=parseInt(d/3600/24),
i=[e.toString(),
f.toString(),
g.toString()];
return0>=d?["00小时00分00秒",!0]:h>0?(window._timestr=h+"天"+forNum(i[2])+"时"+forNum(i[1])+"分"+forNum(i[0])+"秒",[h+"<span>天</span>"+forNum(i[2])+"<span>时</span>"+forNum(i[1])+"<span>分</span>"+forNum(i[0])+"<span>秒</span>",!1]):(window._timestr=forNum(i[2])+"时"+forNum(i[1])+"分"+forNum(i[0])+"秒",[forNum(i[2])+"<span>时</span>"+forNum(i[1])+"<span>分</span>"+forNum(i[0])+"<span>秒</span>",!1])}
functionWebEventTrigger(a,b){
try{
if(WE&&WE.trigger)
return"string"!=typeofb&&(b=JSON.stringify(b)),WE.trigger(a,b)
}catch(c){}
return!1
}
functionisApp(){
try{
if(WE)return!0
}catch(a){}
return!1
}
varquickBuy={init:function(){
vara=this;
this.config={},
this.config.hdurl={miphone:"m3/840410D8656D74E5F334591BD8A408A726799AEC13477D90B5E48DAD36547351/4334F49A1EE391261005E8AC5A0C9D2FDA23BB72A2D20AB3F58343496FD4983D/tip_SaledOverAll.html",mibox:"tv/B1CF7B57BFEAE1EBC37700694C123D894C668BF11F6F25D59311FD36942B3D6A/130F1B18D11F53CA1D0147B24E926C5A9B7676E57BE3D47959D6557545E8A339/tip_SaledOverAll.html"
},
this.config.mode="",
this.mode={miphone:!1,mibox:!1},
this.modeModals={miphone:"#modal_miphone",mibox:"#modal_mibox"},
this.modeCookies={miphone:"xm_hd_so_phone",mibox:"xm_hd_so_box"},
this.config.startDate=+newDate("10/15/201312:00:00"),
this.maskLoad=$("#maskLoad"),
this.config.minSignTime=120,
this.results=null,
this.timer=null,
this.timeCount=Math.floor(Math.abs(10*Math.random()-5))+5;
varb=!0;
for(varcinthis.mode)
$.cookie(this.modeCookies[c])||(b=!1),$.cookie(this.modeCookies[c])&&this.saleOut();
b||($.cookie("xm_diff_hd")?(this.config.serverTime=this.localTime()+parseInt($.cookie("xm_diff_hd"),10),this.config.serverTime>=parseInt(this.config.startDate/1e3,10)?$.cookie("xm_hd_so_phone")&&$.cookie("xm_hd_so_box")||this.getData(!0,function(){a.goBuy()}):this.launch()):this.getData())},getData:function(a,b){
varc=this,a=a||null;
b&&(b=b),
$.ajax({
url:"http://tc.hd.xiaomi.com/hdget",
dataType:"jsonp",
jsonpCallback:"hdcontrol",
timeout:7e3,
beforeSend:function(){
c.maskLoad.css("display","block")},
error:function(){
c.maskLoad.css("display","none"),
alert("服务器压力山大,请您重新刷新页面!")
},
success:function(d){
if(c.maskLoad.css("display","none"),"undefined"==typeofd)
returnalert("服务器压力山大,请您重新刷新页面!"),
void0;
if(c.results=d,a||(c.config.serverTime=c.results.stime),!$.cookie("xm_diff_hd")){
vare=parseInt(c.config.serverTime-c.localTime(),10);
$.cookie("xm_diff_hd",e,{
path:"/",
domain:".xiaomi.com",
expires:1
})
}
if(a){
c.initialData();
for(varfinc.mode)
if(c.config[f].hdstart===!1&&c.config[f].hdstop===!0){
varg=c.modeCookies[f];
$.cookie(g,1,{path:"/",domain:".xiaomi.com",expires:1}),
c.saleOut()
}elseb&&b.call()
}
a||c.launch()
}})},
initialData:function(){
this.config.allow=this.results.status.allow,
this.config.mibox=this.results.status.mibox,
this.config.miphone=this.results.status.miphone
},
launch:function(){
this.timeStart(),
this.countdown()
},
timeStart:function(){
vara=this,
b=1e3*a.config.serverTime,
c=a.config.startDate,
d=c-1e3*60*a.config.minSignTime;
b>=d&&c>b&&!isApp()?
$.cookie("userId")?
($("#view_button").css("visibility","hidden"),
$("#purchase_btn_1").html('<aclass="btn_buy"href="http://bbs.xiaomi.cn/thread-8205768-1-1.html">活动详情</a>'),
$("#purchase_btn_2").html('<aclass="btn_buybtn_02"href="javascript:;">已经登录</a>')):a.toLogin():b>=c&&a.toBuy()
},
toLogin:function(){
$("#view_button").css("visibility","hidden"),
$("#purchase_btn_1").html('<aclass="btn_buy"href="http://bbs.xiaomi.cn/thread-8205768-1-1.html">活动详情</a>'),
$("#purchase_btn_2").html('<aclass="btn_buybtn_02"href="javascript:;">提前登录</a>'),
$("#purchase_btn_2").find(".btn_02").on("click",function(){
WebEventTrigger("login",null)||(window.location.href="http://m.xiaomi.com/mshopapi/index.php/v1/authorize/sso?client_id=180100031013&callback="+encodeURIComponent(window.location.href))}
)},
countdown:function(){
vara=this,
b=null,
c=a.config.startDate;
b=a.config.serverTime?a.config.serverTime:parseInt(+newDate/1e3,10);
vard=c-1e3*60*a.config.minSignTime,
e=setInterval(function(){
varf=countdown(b,c);
f[1]?(clearInterval(e),$("#countdown").css("display","none"),a.toBuy()):(1e3*b!=d||isApp()||($.cookie("userId")?($("#view_button").css("visibility","hidden"),
$("#purchase_btn_1").html('<aclass="btn_buy"href="http://bbs.xiaomi.cn/thread-8205768-1-1.html">活动详情</a>'),
$("#purchase_btn_2").html('<aclass="btn_buy"href="javascript:;">已经登录</a>')):a.toLogin()),b++),
$("#countdown").html(f[0])},1e3)},
toBuy:function(){
vara=this;
a.goBuy();
varb=a.modeModals[a.config.mode];
$(b).find(".close").on("click",function(){
$(b).css("display","none"),
window.clearTimeout(a.timer),
a.timer=null})},
saleOut:function(){
vara={miphone:"#purchase_btn_2",mibox:"#purchase_btn_1"},
b={miphone:"http://t.hd.xiaomi.com/r/?_a=payment_check&_m=1",mibox:"http://m.xiaomi.com/index.html#ac=home&op=addcart&product_id=2505"},
c={miphone:"支付小米手机3",mibox:"支付小米电视"};
for(vardinthis.mode)
$.cookie(this.modeCookies[d])&&($(a[d]).html('<aclass="btn_buy"href="'+b[d]+'">'+c[d]+"</a>"),
$(this.modeModals[d]).is(":visible")&&$(this.modeModals[d]).find(".close").click())},
localTime:function(){
vara=parseInt(+newDate/1e3,10);
returna
},
toProcess:function(a){
varb=this,
c=b.timer,
d=b.timeCount||10,e=$(b.modeModals[a]).find(".re_countdown"),
f=$(b.modeModals[a]).find(".modal_btn"),
g=function(){0==d?(f.html('<aclass="into_buy_btn"href="javascript:;">进入活动</a>'),
b.toBuyGo(b.config.mode),
c&&window.clearTimeout(c),
c=null):(e.html("("+d+")"),
d--,
b.timer=window.setTimeout(function(){g()},1e3))};
c&&window.clearTimeout(c),g()},
goBuy:function(){
vara=this,
b={miphone:"购买小米手机3",mibox:"购买小米电视"},
c={miphone:"#purchase_btn_2",mibox:"#purchase_btn_1"};
for(vardina.mode)
$.cookie(a.modeCookies[d])||($(c[d]).html('<aclass="btn_buybtn_buy_go"data-type="'+d+'"href="javascript:;">'+b[d]+"</a>"),
$(c[d]).is(":hidden")&&$(c[d]).css("display","block"));
$("#open_button").find(".btn_buy_go").on("click",function(){a.mode[$(this).attr("data-type")]=!0;
varb=a.config.mode=$(this).attr("data-type");
if($.cookie("userId"))a.getData(!0,function(){
$(a.modeModals[b]).css("display","block"),
$(a.modeModals[b]).find(".close").on("click",function(){
$(a.modeModals[b]).css("display","none"),window.clearTimeout(a.timer),a.timer=null}),a.toProcess(b)});
else{if(WebEventTrigger("login",null))return;
window.location.href="http://m.xiaomi.com/mshopapi/index.php/v1/authorize/sso?client_id=180100031013&callback="+encodeURIComponent(window.location.href)}})},
toBuyGo:function(a){
varb=this;
window.clearTimeout(b.timer),
b.timer=null,
$(b.modeModals[a]).find(".modal_btn").find(".into_buy_btn").on("click",function(c){c.preventDefault(),b.getData(!0,function(){
if($(b.modeModals[a]).css("display","block"),b.config.allow)if(b.config[a].hdurl){
varc="http://t.hd.xiaomi.com/s/"+b.config[a].hdurl+"&_m=1";
window.setTimeout(function(){window.location.href=c},500)
}else{
vard="http://p.www.xiaomi.com/m/activities/open/"+b.config.hdurl[a];
window.setTimeout(function(){window.location.href=d},500)
}elseif(
b.config[a].hdstart===!1&&b.config[a].hdstop===!0){
vard="http://p.www.xiaomi.com/m/activities/open/"+b.config.hdurl[a];
window.setTimeout(function(){window.location.href=d},500)
}else$(b.modeModals[a]).find(".modal_btn").html('<aclass="re_enter"href="javascript:;">重新进入</a>'),
b.toProcess(a)
})})}};

Javascript 相关文章推荐
XHTML下,JS浮动代码失效的问题
Nov 12 Javascript
js实现的仿新浪微博完美的时间组件升级版
Dec 20 Javascript
js获取TreeView控件选中节点的Text和Value值的方法
Nov 24 Javascript
细说javascript函数从函数的构成开始
Aug 29 Javascript
原生js做的手风琴效果的导航菜单
Nov 08 Javascript
使用jQuery不判断浏览器高度解决iframe自适应高度问题
Dec 16 Javascript
简单易懂的天气插件(代码分享)
Feb 04 Javascript
Bootstrap学习笔记 轮播(Carousel)插件
Mar 21 Javascript
详解vue-cli中配置sass
Jun 21 Javascript
require.js中的define函数详解
Jul 10 Javascript
Vue-cli@3.0 插件系统简析
Sep 05 Javascript
Openlayers实现扩散的动态点(水纹效果)
Aug 17 Javascript
按下回车键指向下一个位置的一个函数代码
Mar 10 #Javascript
用js判断输入是否为中文的函数
Mar 10 #Javascript
用IE重起计算机或者关机的示例代码
Mar 10 #Javascript
屏蔽相应键盘按钮操作
Mar 10 #Javascript
JavaScript对IE操作的经典代码(推荐)
Mar 10 #Javascript
JS中类或对象的定义说明
Mar 10 #Javascript
Node.js中AES加密和其它语言不一致问题解决办法
Mar 10 #Javascript
You might like
PHP获取MAC地址的具体实例
2013/12/13 PHP
PHP中读取文件的8种方法和代码实例
2014/08/05 PHP
PHP中的事务使用实例
2015/05/26 PHP
php cookie工作原理与实例详解
2016/07/18 PHP
PHP实现RTX发送消息提醒的实例代码
2017/01/03 PHP
PHP 多进程与信号中断实现多任务常驻内存管理实例方法
2019/10/04 PHP
PHP mkdir创建文件夹实现方法解析
2020/11/13 PHP
关于jQuery参考实例 1.0 jQuery的哲学
2013/04/07 Javascript
jquery浏览器滚动加载技术实现方案
2014/06/03 Javascript
js倒计时简单实现代码
2016/08/11 Javascript
js date 格式化
2017/02/15 Javascript
jquery实现异步加载图片(懒加载图片一种方式)
2017/04/24 jQuery
js原生代码实现轮播图的实例讲解
2017/07/28 Javascript
vue2+el-menu实现路由跳转及当前项的设置方法实例
2017/11/07 Javascript
从零开始封装自己的自定义Vue组件
2018/10/09 Javascript
uni-app之APP和小程序微信授权方法
2019/05/09 Javascript
vue配置接口域名方法总结
2019/05/12 Javascript
angularjs1.X 重构controller 的方法小结
2019/08/15 Javascript
[10:18]2018DOTA2国际邀请赛寻真——找回自信的TNCPredator
2018/08/13 DOTA
[47:26]完美世界DOTA2联赛 LBZS vs Forest 第二场 11.07
2020/11/09 DOTA
python 安装virtualenv和virtualenvwrapper的方法
2017/01/13 Python
pandas 实现将重复表格去重,并重新转换为表格的方法
2018/04/18 Python
python基于opencv检测程序运行效率
2019/12/28 Python
浅谈cookie和localStorage那些事
2019/08/27 HTML / CSS
html5跳转小程序wx-open-launch-weapp踩坑
2020/12/02 HTML / CSS
拉丁舞学习者的自我评价
2013/10/27 职场文书
乳制品整治工作方案
2014/05/29 职场文书
三八妇女节超市活动方案
2014/08/18 职场文书
工作总结与自我评价
2014/09/18 职场文书
2014领导干部学习焦裕禄同志先进事迹思想汇报
2014/09/19 职场文书
声乐专业大学生职业生涯规划书:理想的未来需要自己去打造
2014/09/20 职场文书
教师年终个人总结
2015/02/11 职场文书
2015年幼儿园保育员工作总结
2015/04/23 职场文书
大学生社会实践感想
2015/08/11 职场文书
python opencv检测直线 cv2.HoughLinesP的实现
2021/06/18 Python
Vue h函数的使用详解
2022/02/18 Vue.js