等等用java手机抢小米,你们说如何能抢到小米手机吗

& & 不知道是饥饿营销还是真的供不应求,小米的火热真的是无法阻挡。众多产品一一亮相,着实吸引眼球,但是一机难求的局面没有改善,让众多米粉败兴而归。我们来实现一个简单的小米抢购软件,让抢购之路多上那么一点点希望。
& & 首先要说明的是小米抢购过程中的很多页面和请求地址都是在开放抢购当天时间点到了之后才开放,抢购结束会关闭,所以你在按照博客的内容自己实现的过程中有请求地址不能访问的,请在抢购开始之后测试,楼主解决不了这个问题。我是在第一次抢购的时候记录请求了哪些地址,做好简单的逻辑之后第二次抢购的时候验证。软件是两个月前完成,当时是可用的。小米抢购的逻辑经常改变,最近这几次没抢,不确定中间请求的地址是否失效。
& & 下面开始分析实现的过程吧。
本文作者&,转载请标明出处
& & 第一步,模拟登陆。在小米首页点击登陆之后可以看到登陆页面,要求输入邮箱/ID、密码,小米的登陆没有验证码,相对简单了很多。点击登陆按钮可以看到请求的地址是&https://account.xiaomi.com/pass/serviceLoginAuth2,请设置好对应的Request Header,请求参数见下图:
& & user 和 pwd 是你的用户名和密码,其他的保持不变应该就可以,返回的结果里&desc 是&成功&说明登陆成功,这个时候能拿到一个返回的cookie,这个cookie不是我们最后需要的cookie,还需要一步请求之后拿到的cookie才能用,从登陆页面请求的抓包结果来看确实还有一步。从上一步的返回的结果里获得notificationUrl的值,形如:/auth/service?userId=xxxxxxxx&_sign=xxxxxxxx&nonce=xxxxxxxx,完整地址为&https://account.xiaomi.com/auth/service?userId=xxxxxxxx&_sign=xxxxxxxx&nonce=xxxxxxxx,带着上一步拿到的cookie访问这个页面,拿到返回的cookie保存起来,这个cookie就是可用的,模拟登陆到这里就完成了。
本文作者&,转载请标明出处
& & 第二步,获得手机版本选择页面的地址。请求地址形如:http://tp.hd.mi.com/getpath/cn?m=1&jsonpcallback=getpath&_=8,最后一个参数为当前时间的时间戳,这个地址只有到开放购买的时候才有效,平时访问是不通的。从返回的结果中拿到path对应的值,形如:http://s1.mi.com/open/DD533DE85CCBA5D1/choosePhone.html?_,这个页面是我们在抢购的时候看到的手机版本选择的页面,获取页面内容,里面有很多有用的信息。
& & 先看一下这个页面里的部分js内容。
1 init: function() {
this.inTheQueue = !1,
this.phoneSku = "",
this.phoneType = "",
this.hdinfoData = null,
this.startTime = new Date(" 12:00:00").getTime() / 1e3,
this.nextDate = "12月16日",
this.showMod = !0,
this.modType = null,
this.fkNum = 0,
this.isReg = "true",
this.hdget_date_tmp = "{{M}}md{{Y}}y47d15s",
this.cookies = {
isStart: "XM_Hd_Start",
buySucc: "XM_Buy_Succ",
userId: "userId",
login: "xm_order_btauth"
this.home = "http://s1.mi.com/open/index.html",
this.hdgetUrl = "http://tp.hd.mi.com/hdget/cn?product={{SKU}}&addcart=1&m=1&fk={{FK}}&uagent={{TODAY}}",
this.hdinfoUrl = "http://tp.hd.mi.com/hdinfo/cn",
this.timestampUrl = "http://tp.hd.mi.com/gettimestamp",
this.getmodeUrl = "http://tp.hd.mi.com/getmode/cn/?product=",
this.nextBookUrl = "http://a.hd.mi.com/productv2/book/a/18#MIPHONE",
this.ordeSite = "http://order.mi.com",
this.shopCartUrl = this.ordeSite + "/cart/add/{{SKU}}?source=bigtap&token={{TOKEN}}",
this.addCartNext = this.ordeSite + "/event/success?goodsid={{SKU}}",
this.loginUrl = "http://s1.mi.com/zt/xm_account/limitfacade.html?third=http%253A%252F%252Forder.mi.com%252Flogin%252Fcallback%253Ffollowup%253Dhttp%2F%25252Fs1.mi.com%25252Fopen%25252Findex.html%2526sign%253DNjEzYmU3ZTJkOWRlY2FiZDQ5NDEwNzEyZjNiMjg0NDA0MGYxYWY3Mg%252C%252C%26sid%3Dmi_eshop&sid=mi_eshop&callback=http%253A%252F%252Forder.mi.com%252Flogin%252Fcallback%253Ffollowup%253Dhttp%2F%25252Fs1.mi.com%25252Fopen%25252Findex.html%2526sign%253DNjEzYmU3ZTJkOWRlY2FiZDQ5NDEwNzEyZjNiMjg0NDA0MGYxYWY3Mg%252C%252C&sign=dK3nqW%252FKhFM3Tl7Jyt9%252FGt3jOI8%253D",
this.noPresaleGoods = [],
this.noBookGoods = [],
this.isHm = ["", "", "", "", ""];
var a = this;
return xmCookie(a.cookies.userId) && xmCookie(a.cookies.login) || (location.href = a.loginUrl),
xmCookie(a.cookies.isStart) ? a.getHdInfo() : a.checkTime(),
$("[data-close-target]").on("click",
function() {
var b = $(this).attr("data-close-target");
return a.hideBox(b),
$("#submitBtn").on("click",
function() {
return ! a.phoneSku || $(this).hasClass("btn-disabled") ? (alert("请选择您要购买的手机"), !1) : $.inArray(a.phoneSku, a.isHm) &= 0 ? void(location.href = "http://order.mi.com/event/selectPacket/goodsid/" + a.phoneSku) : "true" !== a.isReg ? (a.showBox("Tip",
function() {
a.getTipMsg("reg")
}), !1) : void(a.showMod ? (a.getmode(), a.showBox("Fk")) : (a.startQueue(), a.getDmSys()))
$("#boxCacheBtn").on("click",
function() {
a.hideBox("all"),
$("#submitBtn").trigger("click")
"undefined" != typeof HDOVER && HDOVER === !0 ? (location.href = a.home, !1) : ($(".J_nextDate").html(a.nextDate), $(".J_bookBtn").attr("href", a.nextBookUrl), $(".J_fkLoading").on("click", ".J_reloadFk",
function() {
$(this).parent().html('&img src="http://img03.mifile.cn/webfile/images/2014/cn/loading.gif"&'),
a.getmode()
}), void $("#fkNum").on("keyup",
function() {
$(this).val().
$("#boxFkBtn").removeClass("btn-disabled").off().on("click",
function() {
a.checkFk()
& & 仔细分析一下这段js,发现抢购后续的请求地址和参数格式在这里都能找到,hdgetUrl,hdinfoUrl,getmodeUrl,shopCartUrl 这几个后面都会用到,抓包分析后面几步的过程可以和这里的地址验证,先保存下来。下面要做的工作是计算js中{{TODAY}}对应的值,将hdgetUrl中的值替换,计算逻辑可用下面的,
Pattern dateTmpPattern=Pattern.compile("hdget_date_tmp=\"(.*?)\"");
Matcher dateTmpMatcher=dateTmpPattern.matcher(result);
if(dateTmpMatcher.find()) {
dateTmp=dateTmpMatcher.group(1);
dateTmp=dateTmp.replace("{{Y}}",YEAR+"").replace("{{M}}",MONTH).replace("{{D}}",DAY);
hdGetUrl=hdGetUrl.replace("{{TODAY}}",dateTmp);
& & YEAR、MONTH、DAY 为当前日期。
本文作者&,转载请标明出处
& & 第三步,获得产品状态信息。这里用到了 hdinfoUrl,请求地址为http://tp.hd.mi.com/hdinfo/cn?jsonpcallback=hdinfo&_=8(下面不说明的时候比较长的数字应该就是指当前的时间戳)。请求返回的数据格式如下:
{"stime":,"pmstart":false,"status":{"":{"hdstart":false,"hdstop":true,"reg":true},"":{"hdstart":false,"hdstop":true,"reg":true},"":{"hdstart":false,"hdstop":true,"reg":true},"":{"hdstart":false,"hdstop":true,"reg":true},"":{"hdstart":false,"hdstop":true,"reg":true},"":{"hdstart":false,"hdstop":true,"reg":true},"":{"hdstart":false,"hdstop":true,"reg":true},"":{"hdstart":false,"hdstop":true,"reg":true}},"dbe5a2":false}
& & 包含了每种产品的可售状态,可以根据这个信息判断是否能购买,在这里可以过滤掉不能买的信息。
& & 产品代号和名称的对应关系我做了一个对应,这个信息比较老了,请根据每次购买的情况更新:
----小米4联通3G版 亮白16GB 1999
----小米4联通3G版 亮白64GB 2499
----小米4联通4G版 亮白16GB 1999
----小米4电信3G版 亮白16GB 1999
----小米4移动4G版 雅黑16GB 1999
----小米4移动4G版 雅黑64GB 2499
----小米4移动4G版 黑色(金属原色框)16GB 1999
----小米4移动4G版 亮白16GB 1999
----小米4移动4G版 亮白64GB 2499
----红米Note 移动4G增强版 899
----红米Note 联通4G增强版 899
----红米1S联通3G版 金属灰 799
----红米1S电信3G版 金属灰 799
----红米1S移动4G版 金属灰 599
----小米路由器 mini 129
----小米手环 79
& & 要购买哪种产品只需要产品代号信息(应该是sku)就够了。
本文作者&,转载请标明出处
& & 第四步,获取验证码或验证问题。用到了getmodeUrl地址,请求路径为&http://tp.hd.mi.com/getmode/cn/?product=xxxxxxxxxx&jsonpcallback=getmode&_=9,将product值换成你要去买的产品的sku值。根据返回response头的Content-Type值判断是验证码图案还是验证问题,image/jpeg&类型的返回信息应该是验证码,text/html 应该是验证问题。根据不同类型,输入答案后进入第五步。
本文作者&,转载请标明出处
& & 第五步,验证答案。地址和第四步中是类似的,多了一个答案参数,http://tp.hd.mi.com/getmode/cn/?product=&vecode=89&jsonpcallback=getmode&_=0,返回结果中code值是&1&说明验证成功,可以进行下一步,否则重新输入验证答案。
本文作者&,转载请标明出处
& & 第六步,最后获得产品信息,获得下一步TOKEN对应的hdurl。这一步用到了hdgetUrl,http://tp.hd.mi.com/hdget/cn?product={{SKU}}&addcart=1&m=1&fk={{FK}}&uagent={{TODAY}},SKU为要购买产品的sku,FK为第四步出现验证码或问题的答案,TODAY已在前面替换成一个和日期有关动态的参数,拿到请求这个地址的返回结果,
hdcontrol({"d22a51":10,"login":true,"pmstart":false,"status":{"":{"hdstart":false,"hdstop":true,"hdurl":""}}})
& & 其中hdurl有值的时候说明这一步是成功的,拿到这个hdurl进入第七步,如果你得到的结果和我一样没有hdurl的值,那么不好意思,你没法加入购物车,后面会提示出错的,这一步可以多试几次,看看能不能运气好就能买了。
本文作者&,转载请标明出处
& & 第七步,加入到购物车。用到了shopCartUrl ,地址&http://order.mi.com/cart/add/?source=bigtap&token={{TOKEN}}&jsonpcallback=getdata,将这里的 TOKEN 替换成第六步获得的 hdurl , 根据这个请求的返回结果判断是否添加成功,
下面是返回数据的格式,
{"code":-1,"message":"\u6dfb\u52a0\u8d2d\u\u\u767b\u5f55\uff0c\u8bf7\ub\u5f55\uff01","msg":"\u6dfb\u52a0\u8d2d\u\u\u767b\u5f55\uff0c\u8bf7\ub\u5f55\uff01"}
& & 可以根据code的值判断是否成功,后面的为提示信息。
& & 抢购过程中的关键点都分析完了,再次强调一下,抢购的逻辑经常改变,不保证这个过程还适应现在的逻辑,需要自己在开放购买的时候实测。
& & 上一张截图
& & 博文作者:russellwang
& & 博文出处:
& & 本文版权归作者和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作!
阅读(...) 评论()一文读懂华为、小米、OV成为国产四强背后的秘诀?丶一个站在Java后端设计之路的男青年个人博客网站【小米Java高级软件工程师面试】小米的人很nice,但是问题很刁钻。-看准网
10000人以上
公司地址 北京市海淀区清河中街68号华润五彩城写字楼公司介绍
共11张照片
MIUI/路由器/云/智能家居
小米公司正式成立于2010年4月,是一家专注于高端智能手机、互联网电视以及智能家居生态链建设的创新型科技企业。“让每个人都可享受科技的乐趣”是小米公司的愿景。小米公司应用了互联网开发模式开发产品的模式,用极客精神做产品,用互联网模式干掉中间环节,致力于让全球每个人,都能享用来自中国的优质科技产品。
小米智能家庭
小米智能家庭是一款以手机为中心,连接家庭智能设备,实现多设备统一便捷管理的app产品。
跨平台的手机通信工具
手机即时通信工具
android rom系统
高清网络机顶盒
智能手机品牌
小米Java高级软件工程师面试经验详情
小米的人很nice,但是问题很刁钻。
面试地点:小米-北京
问了很多数据结构和算法的问题,感觉这家公司还是很在乎JAVA基础的。
面试官的问题:
问多复习数据结构和算法。
答统计一个1T文本的字符串在里面出现的频率
面试结果:感觉没戏
面试难度:困难
面试感受:一般
按职位查看小米面试
更多Java高级软件工程师面试经验
面试地点:酷玩实验室-北京
面试官很好蛮专业的,公司想做垂直类的科技知识运营,可能自己还...
面试结果:面试未通过
面试难度:有难度
面试感受:一般
面试地点:小米-北京
小米总参:1一楼藤椅浅色坐垫有些脏,没有清洁。希望能够定期清...面试官的问题:
问你的大学是在哪?985还是211?从头讲讲每一段工作经历。
答正常回答,但是感觉作为销售领导问的问题让人反感。
面试结果:面试未通过
面试难度:一般
面试感受:不好
面试地点:小米-北京
重点会问一些VIew上的问题,自定义控件,布局优化这种,会拿...
面试结果:面试未通过
面试难度:一般
面试感受:一般
面试地点:联络互动-北京
首先人力通知面试,事先会问个人信息、离职原因等,然后通知技术...
面试结果:面试通过
面试难度:一般
面试感受:很好
面试地点:小米-北京
公司环境不错,不过不知道一面的工作人员是技术还是人力,谈话大...面试官的问题:
答项目描述。
面试结果:面试未通过
面试难度:一般
面试感受:不好
在小米工作过么?
给TA打个分吧!
来自店员面试
来自Java面试
来自机器学习面试
来自产品经理面试
来自仓储管理面试
来自android工程师面试
来自销售经理面试
来自咨询顾问面试
来自Java面试
来自信用分析师面试
来自项目经理面试
¥1188月平均工资
低于同行业
来自 235职业,565员工分享
平均¥15000
来自103员工分享
平均¥15000
来自21员工分享
平均¥3600
来自18员工分享
来自16员工分享
来自13员工分享
来自12员工分享
来自12员工分享
来自9员工分享
来自8员工分享
来自9员工分享
向该公司老鸟提问
2回答 · 3关注
1回答 · 2关注
1回答 · 2关注
1回答 · 2关注
4回答 · 13关注
1回答 · 2关注
1回答 · 2关注
1回答 · 4关注
1回答 · 2关注
1回答 · 2关注
看了该公司的还看了
1565条面试
1553条面试
1011条面试
小贴士:问题描述的越清楚,越能吸引老鸟来回答哟~
请输入问题
小米面经:想知道小米怎么样?看准网(Kanzhun.com)免费提供小米招聘、小米工资、小米面试、评价、工作环境招聘及员工等北京小米科技有限责任公司的信息。
关注看准官方微信
下载看准官方APP
关注看准官方微信
下载看准官方APP
爆料数十万公司信息爆料
互助职场人在线互动
工资公司实际工资查看
改简历专人改简历提高工资
老鸟私聊求助能挣钱
输入手机号,下载看准APP
扫码下载看准APP或各大应用商店搜索:看准
订阅公司信息
订阅成功!
向老鸟咨询
把你关于小米的问题大胆的提出来,这里的621位老鸟很乐意为你解答~
写下问题吧~
提交成功!请静静等待老鸟们回答~
扫描二维码分享到朋友圈,邀请微信好友帮忙解答
下载看准APP
立享畅读全站爆料记住登录一个月发表随想还能输入:200字该用户最新代码编程随想&by by by by by by [java]代码库小米的javascript除了数据部分,下面就只剩871行的javascript了。
下面分模块进行分析。首先从简单的工具类入手。
从616行到最后。一共253行。
小米由于采用了一个数组,存储所有的静态字符串。所以需要手动对代码进行翻译
var Util = {
time: function() {
var a = m.$("reback");
if (count === 0x0) {//count应该是一个计数器,是倒计时使用的
m.$("box-close").innerHTML = "X";//一个关闭的X
a.innerHTML = "进入活动";
a.className ="reback_btn_next";
this.start();
return false
count = count - 0x1;//倒计时减一
a.innerHTML = ”重新进入(&span id='initCount'&“ + count + ”&/span&)“
//以上的time函数,是显示您正在排队倒计时的那个窗口,count这个值,咱们先记住,看看是从何而来
start: function() {
var b = this,
a = m.$(”reback“); //这里的m.$应该类似于jquery的选择符,选择的是对象的id
a.onclick = function() {
getStatus.jsonInter(CONFIG.srcs.hdget, ”hdget“, true);//是抢购的关键函数,在这里触发抢购,如果抢购成功,页面会自动跳转,这里需要注意下:之前的抢购这个按钮是存在的,所以我点一下reback,就是稍后那个10秒到5秒的倒计时,请求真的会重新提交给服务器,而不用等30秒。18号的抢购中,却删除了这个按钮,导致我抢购失败。也让郁闷的我决定写这篇文章。
b.retime();//下一个函数
_gaq.push([”_trackEvent“, ”活动“, ”抢购“,”进入活动“);
a.onclick =
return false
//以上,点击开始抢购后的执行的代码,注意这里return false,你懂得。
retime: function() {
m.$(”box-close“).innerHTML =” “;
m.$(”reback“).className = ”reback_btn“;
count = CONFIG.count
//count是等待的秒数
//以上,进行重试的倒计时
changebg: function() {
setInterval(function() {
if (!stop) {
m.$("top").className = "topmitv";
stop = true
m.$("top").className = "topmi3";
stop = false
0x1388) //5秒钟后自动换背景哦。
//以上,自动背景替换,5秒换一下
showVideo: function(g) {
if (typeof document.body.style.maxHeight !== ”undefined“) {//只显示一个等待框。
var a = document.body.scrollW
var e = document.body.scrollH
var b = m.$(”videoBoxMask“);
b.style.width = a + ”px“;
b.style.height = e + ”px“;
b.style.display = ”block“;
b.onclick = function() {
Util.closeBox()
var c = ”&span class="close" onclick="Util.closeBox()" title="关闭"&X“;
var f = document.getElementById(”videoBox“);
var d = g.getAttribute(”data-url“);
f.innerHTML = c.replace(”{{videoUrl}}“, d);
f.style.display =”block“;
return false
//以上,显示风起云涌的人山人海的对话框,等吧,兄弟们。
closeBox: function() {
m.$(”videoBox“).style.display = ”none“;
m.$(”videoBox“).innerHTML =”“;
m.$(”videoBoxMask“).style.display =”none“;
//以上,关闭抢购排队对话框
getBookInfo: function(c) { //传入一个c,c是什么呢?
var a = ”“,
b = function(g, f, h) {
return ”&h3&很遗憾,您没有预约“ + g + ”喔&/h3&参与开放购买需要提前预约,别灰心,你可返回首页尝试购买“ + f + ”, 也可立即预约11月26日星期二开放购买&/p&“ + h + ”返回活动首页“
switch (c) {
//原来c是抢购的种类
case ”phone“:
a = ”小米手机“;
e = ”小米电视及小米盒子“;
d = CONFIG.urls.bookP
case ”tv“:
a = ”小米电视“;
e = ”小米手机及小米盒子“;
d = CONFIG.urls.bookTv;
case ”box“:
a = ”小米盒子“;
e = ”小米手机及小米电视“;
d = CONFIG.urls.bookB
m.$(”box-reg-wrap“).innerHTML = b(a, e, d);
m.$(”box-reg-wrap“).style.background =”url(http://p.www.xiaomi.com/open/131101/images/mitu-1.png) no-repeat 5px 0“
//来张漂亮背景
//以上,只是用来通知哥们没有预约。。不能抢购。
pushGA: function(b) {
var a = ”“;
switch (b) {
case ”phone“:
a = ”购买手机“;
a = ”购买电视“;
case ”box“:
a = ”购买盒子“;
_gaq.push([”_trackEvent“, ”活动“, ”抢购“, a])
//以上,是用来借用google的分析引擎,记录用户行为和流量
bookedPop: function(c, d) { //d很关键,d里面有预定的url
var b = CONFIG.isBook,
a = d.getAttribute(”href“);
if (m.cookie(CONFIG.cookies.userid)) { //采用cookie进行权限验证,降低服务器负载
if ((c === ”phone“ && b.phone === false) || (c === ”tv“ && b.tv === false) || (c === ”box“ && b.box === false)) {//没预定的判断
this.getBookInfo(c);//提示哥们没有预定
getStatus.boxy(true, ”-reg“) //去预定吧
window.open(a) //打开支付的页面,
location.href = CONFIG.urls.login//悲催的没登陆。。。
return false
//以上,是支付的代码
showBox: function(b) {
var a = CONFIG.isB
this.pushGA(b);
if (m.cookie(CONFIG.cookies.userid)) {
CONFIG.proType =
if ((b === ”phone“ && a.phone === false) || (b === ”tv“ && a.tv === false) || (b === ”box“ && a.box === false)) {
this.getBookInfo(b);
getStatus.boxy(true, ” -reg“);
return false
getStatus.jsonInter(CONFIG.srcs.hdget,”hdget“, true)
location.href = CONFIG.urls.login
animate: function(e, b) {
var c = document.getElementById(e);
var a = function() {
var i = d / 0
var g = 0x0;
var f = function() {
if (g == 0xa) {
clearInterval(h)
var j = 0x0 - 0x5a *
c.style.backgroundPosition = j +”px 0“
var h = setInterval(f, i)
window.loadingAnimate = setInterval(a, d)
resetServertime: function() {
var a = 0x1e * 0xea60;
window.resetTime = setInterval(function() {
getStatus.jsonInter(CONFIG.srcs.hdinfo, ”hdinfo“, false)
//以上,是显示用的动画
var loginInfo = {
userId: 0x0,
userName: ”“ //用cookie存用户信息
init: function() {
this.data.userId = m.cookie(CONFIG.cookies.userid); //取出用户名
if (!this.data.userId) {
return false
this.data.userName = (this.data.userId) ? m.cookie(”XM_“ + this.data.userId + ”_UN“) : ”“;//这里要hack的人要注意了,是cookie的格式,应该可以伪造
if (this.data.userName == null || this.data.userName == ”“) {
var a = document.createElement(”script“);
a.src = ”https://account.xiaomi.com/pass/userInfoJsonP?userId=“ + this.data.userId + _$[277];
a.type = ”&callback=loginInfo.getAccountInfo“;
document.getElementsByTagName(”text/javascript“)[0x0].appendChild(a)
this.upUserInfo()
//以上,是右上角登陆状态的显示
upUserInfo: function() {
var a = this.data.userN
if ( !! m.$(”LoginArea“)) {
m.$(”LoginArea“).innerHTML = ”欢迎您&“ + a + ”!&a href='http://order.xiaomi.com/site/logout'&退出“;
m.$(”LoginArea“).style.paddingLeft = ”12px“
//以上,同上,写的好业余
getAccountInfo: function(b) {
if (b.userId) {
this.data.userName = (b.uniqName) ? b.uniqName: b.userId;
path: ”/“,
domain:”.xiaomi.com“
m.cookie(”XM_“+ this.data.userId + ”_UN“, this.data.userName, a);//这算掩耳盗铃吗?
this.upUserInfo()
//以上,用户信息
//下面是,网页进入完毕后自动执行的。参考 jquery的ready
m.ready(function() { //越来越像改写的jquery了,为了防止冲突,加了个m
m.phone(CONFIG.mIndex);
getStatus.init();
loginInfo.init();
Util.changebg();
m.$(”box-cache-btn“).onclick = function() {
getStatus.jsonInter(CONFIG.srcs.hdget, ”hdget“, true) //按钮,触发抢购,然后开始等待30秒。。
//以上是注册点击抢购按钮的事件,点击抢购按钮,就执行getStatus.jsonInter方法
m.addEvent(m.$(”linksCon“), ”mouseover“,
function() {
m.$(”hdLnks“).style.display = ”block“;
m.$(”linksCon-span“).style.cssText = ”background-color:#color:#333“
m.addEvent(m.$(“linksCon”),"mouseout",
function() {
m.$("hdLnks").style.display = "none";
m.$("linksCon-span").style.cssText = "background:border:0;"
//以下是自动执行代码,是给google用来做分析的
var _gaq = _gaq || [];
_gaq.push([“_setAccount”, “UA-”]);
_gaq.push([“_addOrganic”,“baidu”, “word”]);
_gaq.push([“_addOrganic”, “soso”, “w”]);
_gaq.push([“_addOrganic”, “vnet”, “kw”]);
_gaq.push([“_addOrganic”, “sogou”, “query”]);
_gaq.push([“_addOrganic”, “youdao”, “q”]);
_gaq.push([“_addOrganic”, “so”, “q”]);
_gaq.push(["_setDomainName", "xiaomi.com"]);
_gaq.push(["_setAllowLinker", true]);
_gaq.push(["_trackPageview"]); (function() {
var b = document.createElement("script");
b.type = "text/javascript";
b.src = ("https:"== document.location.protocol ? " https://ssl" : "http://www") + ".google-analytics.com/ga.js";
var a = document.getElementsByTagName("script")[0x0];
a.parentNode.insertBefore(b, a)
var _msq = _msq || [];
_msq.push(["setDomainId", 0x64]);
_msq.push(["trackPageView"]); (function() {
var a = document.createElement("script");
a.type = "text/javascript";
a.src = " http://p.www.xiaomi.com/js/xmst.js";
var b = document.getElementsByTagName("script")[0x0];
b.parentNode.insertBefore(a, b)
分享到:更多发表评论:评论须知:1、评论每次加2分,每天上限为30;2、请文明用语,共同创建干净的技术交流环境;3、若被发现提交非法信息,评论将会被删除,并且给予扣分处理,严重者给予封号处理;4、请勿发布广告信息或其他无关评论,否则将会删除评论并扣分,严重者给予封号处理。

我要回帖

更多关于 怎么才能抢到小米8 的文章

 

随机推荐