红米手机抢购的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 相关文章推荐
setTimeout 不断吐食CPU的问题分析
Apr 01 Javascript
JS自定义功能函数实现动态添加网址参数修改网址参数值
Aug 02 Javascript
js+html5实现canvas绘制圆形图案的方法
Jun 05 Javascript
JavaScript中三种异步上传文件方式
Mar 06 Javascript
jQuery的Each比JS原生for循环性能慢很多的原因
Jul 05 Javascript
浅谈Web页面向后台提交数据的方式和选择
Sep 23 Javascript
React实现点击删除列表中对应项
Jan 10 Javascript
nuxt+axios解决前后端分离SSR的示例代码
Oct 24 Javascript
基于vue-router 多级路由redirect 重定向的问题
Sep 03 Javascript
微信小程序如何获取用户收货地址
Nov 27 Javascript
Angular7.2.7路由使用初体验
Mar 01 Javascript
es6数值的扩展方法
Mar 11 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
IIS php环境配置PHP5 MySQL5 ZendOptimizer phpmyadmin安装与配置
2008/11/18 PHP
php检测网页是否被百度收录的函数代码
2013/10/09 PHP
Thinkphp搭建包括JS多语言的多语言项目实现方法
2014/11/24 PHP
PHP实现判断数组是一维、二维或几维的方法
2017/02/06 PHP
原生php实现excel文件读写的方法分析
2018/04/25 PHP
Nigma vs Alliance BO5 第五场2.14
2021/03/10 DOTA
js实现翻页后保持checkbox选中状态的实现方法
2012/11/03 Javascript
Flex通过JS获取客户端IP和计算机名的实例代码
2013/11/21 Javascript
如何通过javascript操作web控件的自定义属性
2013/11/25 Javascript
Javascript表单验证要注意的事项
2014/09/29 Javascript
jquery制作LED 时钟特效
2015/02/01 Javascript
浅谈jQuery this和$(this)的区别及获取$(this)子元素对象的方法
2016/11/29 Javascript
JavaScript实现大图轮播效果
2017/01/11 Javascript
五步轻松实现JavaScript HTML时钟效果
2020/03/25 Javascript
Bootstrap实现翻页效果
2017/11/27 Javascript
浅谈webpack-dev-server的配置和使用
2018/05/17 Javascript
AngularJS自定义表单验证功能实例详解
2018/08/24 Javascript
vue element 中的table动态渲染实现(动态表头)
2019/11/21 Javascript
vue动态合并单元格并添加小计合计功能示例
2020/11/26 Vue.js
[01:05:30]VP vs TNC 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
python实现将pvr格式转换成pvr.ccz的方法
2015/04/28 Python
Python实现列表删除重复元素的三种常用方法分析
2017/11/24 Python
Python实现在tkinter中使用matplotlib绘制图形的方法示例
2018/01/18 Python
Python3.5面向对象程序设计之类的继承和多态详解
2019/04/24 Python
Python3和pyqt5实现控件数据动态显示方式
2019/12/13 Python
pytorch 模拟关系拟合——回归实例
2020/01/14 Python
python 如何实现遗传算法
2020/09/22 Python
python Autopep8实现按PEP8风格自动排版Python代码
2021/03/02 Python
学生会干部自荐信
2014/02/04 职场文书
2014年教育工作总结
2014/11/26 职场文书
超市督导岗位职责
2015/04/10 职场文书
冬季作息时间调整通知
2015/04/24 职场文书
新生开学寄语大全
2015/05/28 职场文书
2019年亲子运动会口号
2019/10/11 职场文书
用Python selenium实现淘宝抢单机器人
2021/06/18 Python
PHP面试题 wakeup魔法 Ezpop pop序列化与反序列化
2022/04/11 PHP