红米手机抢购的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 相关文章推荐
jQuery-serialize()输出序列化form表单值的方法
Dec 26 Javascript
javascript实现div浮动在网页最顶上并带关闭按钮效果实例
Aug 13 Javascript
将HTML格式的String转化为HTMLElement的实现方法
Aug 07 Javascript
js判断浏览器版本以及浏览器内核的方法
Jan 20 Javascript
JavaScript判断对象是否为数组
Dec 22 Javascript
基于JavaScript实现弹出框效果
Feb 19 Javascript
JS实现的在线调色板实例(附demo源码下载)
Mar 01 Javascript
Jquery删除css属性的简单方法
Dec 04 Javascript
echarts学习笔记之箱线图的分析与绘制详解
Nov 22 Javascript
Vue实现6位数密码效果
Aug 18 Javascript
总结4个方面优化Vue项目
Feb 11 Javascript
Vue实现随机验证码功能
Dec 29 Vue.js
按下回车键指向下一个位置的一个函数代码
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中目录,文件操作详谈
2007/03/19 PHP
PHP按行读取文件时删除换行符的3种方法
2014/05/04 PHP
php+mysql实现无限分类实例详解
2015/01/15 PHP
php实现session自定义会话处理器的方法
2015/01/27 PHP
laravel框架数据库配置及操作数据库示例
2019/10/10 PHP
PHP PDO和消息队列的个人理解与应用实例分析
2019/11/25 PHP
Javascript下判断是否为闰年的Datetime包
2010/10/26 Javascript
Jquery插件 easyUI属性汇总
2011/01/19 Javascript
基于jquery的时间段实现代码
2012/08/02 Javascript
JS实现简单的二元方程计算器功能示例
2017/01/03 Javascript
js实现登录框鼠标拖拽效果
2017/03/09 Javascript
jQuery 防止相同的事件快速重复触发方法
2018/02/08 jQuery
JavaScript实现的简单Tab点击切换功能示例
2018/07/06 Javascript
如何将百度地图包装成Vue的组件的方法步骤
2019/02/12 Javascript
Vue快速实现通用表单验证的示例代码
2020/01/09 Javascript
python 平衡二叉树实现代码示例
2018/07/07 Python
详解Anaconda 的安装教程
2020/09/23 Python
Python加载数据的5种不同方式(收藏)
2020/11/13 Python
pandas map(),apply(),applymap()区别解析
2021/02/24 Python
英国豪华针织品牌John Smedley的在线销售商:The Outlet by John Smedley
2018/04/08 全球购物
Java中的异常处理机制的简单原理和应用
2013/04/27 面试题
合同协议书格式
2014/04/18 职场文书
九一八事变演讲稿
2014/09/05 职场文书
党员自我评议个人对照检查材料
2014/09/16 职场文书
四查四看整改措施
2014/09/19 职场文书
财务检查整改报告
2014/11/06 职场文书
2014年挂职干部工作总结
2014/12/06 职场文书
灵魂歌王观后感
2015/06/17 职场文书
新生儿未入户证明
2015/06/23 职场文书
格列佛游记读书笔记
2015/06/30 职场文书
正规欠条模板
2015/07/03 职场文书
2019大学毕业晚会主持词
2019/06/21 职场文书
68句权威创业名言
2019/08/26 职场文书
2019关于垃圾分类处理的调查报告
2019/12/26 职场文书
php随机生成验证码,php随机生成数字,php随机生成数字加字母!
2021/04/01 PHP
解决Springboot PostMapping无法获取数据的问题
2022/05/06 Java/Android