来源:https://blog.csdn.net/liusaint1992/article/details/80753878
几个不复杂的点,但提高代码优美度还注意以下几点:
1、bind()绑定this 方式
this.timer = setTimeout(this.setTimer.bind(this), 30);
2、document.querySelector选取第一个元素
3、判断存在并执行的简便写法
$("#J_miAlertConfirm")[0] && $("#J_miAlertConfirm")[0].click();
4、each()函数中直接DOM操作click(),不用转为jQuery对象操作
$("#J_cartListBody .item-box:gt(0)").find(".J_delGoods").each(function(index, el) {
el.click();
});
var app = { timer: '', init: function() { this.setTimer(); }, setTimer: function() { this.timer && clearTimeout(this.timer); try { //这里就没有做具体哪个页面的判断了。暂时不会相互影响。 //详情页面做的事 this.detailFn(); //中间页,进入购物车 this.goCart(); //购物车页面 this.cartFn(); //提交订单页面。 this.orderFn(); } catch (e) { // 还没加载出来 } this.timer = setTimeout(this.setTimer.bind(this), 30); }, //商品页面做的事情 //在选项加载出来之后选择然后不断点击加入购物车。 detailFn() { //关闭可能的弹窗 $(".modal-body .btn.btn-primary:visible").each(function(index, el) { el.click(); }); $("#J_miAlertConfirm")[0] && $("#J_miAlertConfirm")[0].click(); //版本 128g var levelDom = $(".J_step.pro-choose[data-index=0] ul>li").eq(1)[0]; //颜色 白色 var colorDom = $(".J_step.pro-choose[data-index=1] ul>li").eq(1)[0]; //保险。不选保险了。非必要项。碎屏险可以补买的。 // var safeDom = $(".J_service.pro-choose[data-index=0] ul>li").eq(1)[0]; //当这几个都加载出来的时候才执行点击加入。避免购物车页面出现多项商品。 if (levelDom && colorDom ) { levelDom.click(); colorDom.click(); // if (!$(safeDom).hasClass('active')) { // safeDom.click(); // } //点击加入购物车 $("#J_buyBtnBox a")[0] && $("#J_buyBtnBox a")[0].click(); } }, //跳转到购物车页面 goCart() { if ($(".J_actBox a:contains('去购物车结算')")[0]) { $(".J_actBox a:contains('去购物车结算')")[0].click(); //观察到卡了一s在这里,所以加上这一句,上面那句其实就没有用了。 location.href = 'https://static.mi.com/cart/'; //跑一个错误,中断线程。不再生成定时器。 throw new Error('abc'); } }, //购物车页 //第一个页面可能发了多次加入购物车的请求。 所以在这个页面要把多余的项以及数量删除。 cartFn() { //阻止弹窗,避免阻断流程 window.alert = function(){} //购物车中有大于1件商品,删除 $("#J_cartListBody .item-box:gt(0)").find(".J_delGoods").each(function(index, el) { el.click(); //确认删除按钮 $("#J_alertOk")[0] && $("#J_alertOk")[0].click(); }); //确认删除按钮 $("#J_alertOk")[0] && $("#J_alertOk")[0].click(); var interval = 0; //将每一条的数量减少到1。 $(".J_minus").each(function(index, el) { //数量不为1就减少。 //不能用这个while。因为input中的值是异步减少的。 if ($(el).next('input').val() != 1) { interval = 200; el.click(); el.click(); el.click(); el.click(); } }); //去结算。因为上面的数量减少操作是异步的。所以这里设置一个延时,让上面的操作生效之后再进行这个操作。 setTimeout(function() { $("#J_goCheckout")[0] && $("#J_goCheckout")[0].click(); }, interval); //到了购物车页面甚至下订单的页面依然可能会出现售罄的情况。这个时候不要放弃,重新刷新购物车页面继续进行操作。还是有可能刷到的。 if ($('h3:contains(抱歉,以下商品已经失效或者暂时售罄):visible').length > 0||$('a:contains(到货提醒):visible').length > 0||$("dt:contains(选中的商品已经全部失效或者暂时售罄):visible").length>0||$("#J_goCheckout").hasClass('btn-disabled')) { //避免请求太过频繁。 setTimeout(function() { location.href = 'https://static.mi.com/cart/'; }, 500) } }, //选地址,下单页面 orderFn() { if (document.querySelector('.J_addressItem')) { document.querySelector('.J_addressItem').click(); document.querySelector("#J_checkoutToPay") && document.querySelector("#J_checkoutToPay").click(); } $("button:contains(确定):visible").click(); $(".modal-backdrop:visible").remove(); } } app.init();
相关推荐
这是小米抢购软件的源码,分享给大家,以供学习使用! 这是小米抢购软件的源码,分享给大家,以供学习使用! 这是小米抢购软件的源码,分享给大家,以供学习使用!
显示商品列表,并定抢购。如淘宝中的商品列表,商品抢购,倒计时。 对于初学者是一个很好学习DEMO
javascript 浏览器抢购源码,仅供学习参考
易语言网页操作,抢购类软件(源代码),通过精易模块进行模拟网页按钮点击等操作,是一个很好的学习例程!
看到很多人想要京东抢购源码,我记得很久之前,小凡在论坛开源过这个源码,不知道为什么现在找不到,那么,我现在免费共享出来给大家学习!
本教程供环境搭建学习交流,请勿用于违法行为。
python 京东预约抢购茅台脚本插件 一键运行 根据 README.md介绍的步骤即可,已经测试可以抢购得到。 注意:本资源仅用于用来学习,严禁用于任何商业目的,下载之后应当在24小时之内删除。
本教程供环境搭建学习交流,请勿用于违法行为。
采用SpringBoot+中间件实现在高并发业务场景下商品的的限时抢购秒杀系统,本题目基于线上电商平台,以高可靠、高负载、高并发来实现商品的限时抢购系统。 主要技术 (一)、整体架构: 1、Redis主从架构: 2、...
python 京东预约抢购茅台脚本插件 一键运行,按照readme介绍的步骤即可。 已经测试可以抢购得到。 注意:本资源仅用于用来学习,严禁用于任何商业目的,下载之后应当在24小时之内删除。
京东抢购(仅用于测试和学习研究,不能保证其合法性,准确性,完整性和有效性,请根据情况自行判断)
淘宝秒杀软 懂得都懂 仅供码友交流学习,请勿用于非法用途
如图所示,点击使用介绍按钮,出现使用介绍的对话框,用户可以学习软件的使用方式,需要注意的是如果用户只是试用版那只能使用枚举抢购的功能,这就需要用户自己去考虑自己的实际情况了。 如图所示,点击...
本教程供环境搭建学习交流,请勿用于违法行为。
iPhone5S抢购辅助脚本 仅仅是测试 可以参考学习
京东自动抢购源代码仅供学习,实现对京东商品的自动化抢购,抢购成功后会有邮件提醒,用户手机自己付款
新盲盒商品源码-随机开箱抢购新盲盒商品源码-随机开箱抢购 2022-03-18 永久尊享 444 推广 PS 本源码提供给大家学习研究借鉴美工之用,请勿用于商业和非法用途,无任何技术支持! 2022年开发的Thinkphp5盲盒商城完整...
基于Python的京东定时自动预约,抢购,只针对性支持要先预约,到点抢购.然后直接下单的商品+源代码+文档说明 - 不懂运行,下载完可以私聊问,可远程教学 该资源内项目源码是个人的毕设,代码都测试ok,都是运行成功后才...
本项目用thinkphp5写的商城app源码+后台系统源码,商城该有的都有,想要学习的就自行下载,本项目仅供学习,不能商用哦