【抢购秒#助手】任意网站抢购、秒#、抢券等,支持自建秒#方案、从论坛导入秒#方案,非常灵活。【#券+返现】在淘宝、天猫、#东、唯品会、考拉海购的‘商品搜索页’和‘商品详情页’上显示优惠券及返现,功能简单,显示直观,在商品详情页通过「花前省一省」APP扫码,直接在APP进入商品、#券及获得返现。
// ==UserScript== // @name 【省一省】双11超级红包!优惠券+返现+抢购秒#助手--任意网站抢购、秒#、抢券等,支持淘宝、天猫、#东、唯品会、考拉海购#券,配合APP扫码下单后即可获得返现!!!。 // @namespace cyzlizhe // @version 5.3 // @description 【抢购秒#助手】任意网站抢购、秒#、抢券等,支持自建秒#方案、从论坛导入秒#方案,非常灵活。【#券+返现】在淘宝、天猫、#东、唯品会、考拉海购的‘商品搜索页’和‘商品详情页’上显示优惠券及返现,功能简单,显示直观,在商品详情页通过「花前省一省」APP扫码,直接在APP进入商品、#券及获得返现。 // @author cyzlizhe // @icon https://s3.ax1x.com/2020/12/15/rKQCod.png // @match *://*.taobao.com/* // @match *://*.tmall.com/* // @match *://*.tmall.hk/* // @match *://*.liangxinyao.com/* // @match *://*.jd.com/* // @match *://*.jd.hk/* // @match *://*.vip.com/* // @match *://*.kaola.com/* // @match *://*.suning.com/* // @match *://*.fengwd.com/* // @match https://*/* // @match http://*/* // @exclude *://login.taobao.com/* // @exclude *://pages.tmall.com/* // @exclude *://uland.taobao.com/* // @exclude *://uland.taobao.com/* // @require https://cdn.bootcdn.net/ajax/libs/jquery/1.6.3/jquery.js // @require https://cdn.bootcss.com/jquery.qrcode/1.0/jquery.qrcode.min.js // @require https://cdn.bootcdn.net/ajax/libs/apexcharts/3.9.0/apexcharts.min.js // @require https://cdn.bootcdn.net/ajax/libs/sweetalert/2.1.2/sweetalert.min.js // @run-at document-start // @grant GM_xmlhttpRequest // @grant GM_setValue // @grant GM_getValue // @grant GM_setClipboard // @grant GM_openInTab // @noframes true // @connect taobao.com // @connect gwdang.com // @connect jd.com // @connect suning.com // @connect pinduoduo.com // @connect vmall.com // @connect mi.com // @connect youyizhineng.top // @antifeature referral-link 【应GreasyFork代码规范要求:含有优惠券查询功能的脚本必须添加此提示!】 // @note 2021年01月19日10:48:42 bug修复,新增年货节超级红包,调整以适应更多方案。 // @note 2021年01月13日11:10:04 界面调整 // @note 2021年01月11日11:08:31 1.设置中悬浮球可以选择白名单或者黑名单屏蔽 2.优化返现显示逻辑 3.其他底层优化 // @note 2020年12月31日11:15:32 1.修复设置持续时间不起作用的bug 2.插件调整,以适应捡漏模式 3.增加抢购助手使用说明 4.增加立即执行按钮,可以立即执行方案。 // @note 2020年12月22日22:05:43 优化淘宝快速下单预置方案,新增对天猫超市world页面的支持。 // @note 2020年12月15日11:05:02 全新版本,全新出发,新增抢购秒#助手,返利机器人。 // ==/UserScript== (function () { "use strict"; var $2 = $.noConflict(); var version = GM_info.script.version; // Your code here... //清除任务 若工作不正常,把下面三行注释打开随便打开一个网页,然后再注释上即可 // GM_setValue('obj_plans', null); // GM_setValue('virtualCookie', null); // return var obj = {}; var query_item_list = ''; var query_data_list_back = ''; var check_url = ''; var stop = ''; //加载屏蔽网址 var blockUrl = GM_getValue('blockUrl', ''); console.log(blockUrl); var passUrl = GM_getValue('passUrl', ''); console.log(passUrl); var BWlist_sel = GM_getValue('BWlist_sel', ''); if (BWlist_sel == '') { GM_setValue('BWlist_sel', 'white_mode'); BWlist_sel = 'white_mode'; } // BWlist_sel = 'white_mode'; //#region css样式 var style = document.createElement("style"); style.type = "text/css"; style.innerHTML = '.coupon-wrap{margin:10px 0 5px 0;color:#fff}.coupon-wrap-rm{margin:1px 0 5px 0;overflow:hidden;color:#000}.coupon-wrap-qr{margin:1px 0 8px 0;overflow:hidden;color:#000}.coupon-wrap-trend{margin:1px 0 0 0;overflow:hidden;color:#000;display:none}.coupon-wrap-price{margin:1px 0 0 0;overflow:hidden;color:#000}.coupon-wrap-trend{margin:1px 0 0 0;overflow:hidden;color:#000;display:none}.coupon-wrap .coupon{background-image:linear-gradient(150deg,#f90,#f69);display:inline-flex;color:white;position:relative;padding-left:.5rem;padding-right:.5rem;border-top-right-radius:.3rem;border-bottom-right-radius:.3rem;overflow:hidden}.coupon-wrap .coupon::before{left:-7px;content:"";position:absolute;top:0;height:100%;width:14px;background-image:radial-gradient(white 0,white 4px,transparent 4px);background-size:14px 14px;z-index:1;background-position:0 2px;background-repeat:repeat-y}.coupon-wrap .coupon .coupon-info{border-right:2px dashed white;padding-left:20px;padding-top:20px;padding-bottom:20px;position:relative;min-width:200px;font-size:14px}.coupon-wrap .coupon .coupon-info::before,.coupon-wrap .coupon .coupon-info::after{content:"";width:20px;height:20px;background-color:white;position:absolute;right:-11px;border-radius:50%}.coupon-wrap .coupon .coupon-info::before{top:-10px}.coupon-wrap .coupon .coupon-info::after{bottom:-10px}.coupon-wrap .coupon .coupon-info .coupon-desc{font-size:18px}.coupon-wrap .coupon .coupon-get{display:flex;justify-content:center;align-items:center;flex-direction:column;min-width:100px;position:relative;font-size:20px;color:#fff;padding:20px}#tb-cool-area{border:1px solid #eee;margin:0 auto;position:relative;clear:both;display:none}#tb-cool-area .tb-cool-area-home{position:absolute;top:5px;right:10px;z-index:88}#tb-cool-area .tb-cool-area-home a{cursor:pointer;color:#515858;font-size:10px;text-decoration:none}#tb-cool-area .tb-cool-area-home a.new-version{color:#ff0036}#tb-cool-area .tb-cool-area-benefit{width:240px;float:left}#tb-cool-area .tb-cool-area-benefit .tb-cool-quan-qrcode{text-align:center;min-height:150px;margin-top:40px}#tb-cool-area .tb-cool-area-benefit .tb-cool-quan-qrcode canvas,#tb-cool-area .tb-cool-area-benefit .tb-cool-quan-qrcode img{margin:0 auto}#tb-cool-area .tb-cool-area-benefit .tb-cool-quan-title{margin-top:20px;color:#000;font-size:14px;font-weight:700;text-align:center}#tb-cool-area .tb-cool-area-benefit .tb-cool-quan-title span{color:#ff0036;font-weight:700}#tb-cool-area .tb-cool-area-benefit .tb-cool-quan-action{margin-top:10px;text-align:center}#tb-cool-area .tb-cool-area-benefit .tb-cool-quan-action a{text-decoration:none}#tb-cool-area .tb-cool-area-benefit .tb-cool-quan-action .tb-cool-quan-button{min-width:120px;padding:0 8px;line-height:35px;color:#fff;background:#ff0036;font-size:13px;font-weight:700;letter-spacing:1.5px;margin:0 auto;text-align:center;border-radius:15px;display:inline-block;cursor:pointer}#tb-cool-area .tb-cool-area-benefit .tb-cool-quan-action .tb-cool-quan-button.quan-none{color:#000;background:#bec5c5}#tb-cool-area .tb-cool-area-history{height:300px;overflow:hidden;position:relative}#tb-cool-area .tb-cool-area-history #tb-cool-area-chart,#tb-cool-area .tb-cool-area-history .tb-cool-area-container{width:100%;height:100%}#tb-cool-area .tb-cool-area-history .tb-cool-history-tip{position:absolute;margin:0;top:50%;left:50%;letter-spacing:1px;font-size:15px;transform:translateX(-50%) translateY(-50%)}#tb-cool-area .tb-cool-area-table{margin-top:10px;position:relative;overflow:hidden}#tb-cool-area .tb-cool-quan-tip{position:absolute;margin:0;top:50%;left:50%;letter-spacing:1px;font-size:15px;opacity:0;transform:translateX(-50%) translateY(-50%)}#tb-cool-area .tb-cool-quan-tip a{color:#333;font-weight:400;text-decoration:none}#tb-cool-area .tb-cool-quan-tip a:hover{color:#ff0036}#tb-cool-area .tb-cool-area-table .tb-cool-quan-table{width:100%;font-size:14px;text-align:center}#tb-cool-area .tb-cool-area-table .tb-cool-quan-table tr td{padding:4px;color:#1c2323;border-top:1px solid #eee;border-left:1px solid #eee}#tb-cool-area .tb-cool-area-table .tb-cool-quan-table tr td span{color:#ff0036;font-weight:700}#tb-cool-area .tb-cool-area-table .tb-cool-quan-table tr td:first-child{border-left:none}#tb-cool-area .tb-cool-area-table .tb-cool-quan-table .tb-cool-quan-link{width:60px;line-height:24px;font-size:12px;background:#ff0036;text-decoration:none;display:inline-block}#tb-cool-area .tb-cool-area-table .tb-cool-quan-table .tb-cool-quan-link-enable{cursor:pointer;color:#fff}#tb-cool-area .tb-cool-area-table .tb-cool-quan-table .tb-cool-quan-link-disable{cursor:default;color:#000;background:#ccc}#tb-cool-area .tb-cool-quan-empty .tb-cool-quan-tip{opacity:1}#tb-cool-area .tb-cool-quan-empty .tb-cool-quan-table{filter:blur(3px);-webkit-filter:blur(3px);-moz-filter:blur(3px);-ms-filter:blur(3px)}.tb-cool-box-area{position:absolute;top:20px;right:0;z-index:87}.tb-cool-box-area-rm{position:absolute;top:50px;right:0;z-index:87}' + '.tb-cool-box-wait{cursor:pointer}.tb-cool-box-wait-rm{cursor:pointer}.tb-cool-box-already{position:relative}.tb-cool-box-info{width:auto!important;height:auto!important;padding:6px 8px!important;font-size:12px;color:#fff!important;border-radius:15px 0 0 15px;cursor:pointer;user-select:none}.tb-cool-box-info,.tb-cool-box-info:hover,.tb-cool-box-info:visited{text-decoration:none!important}.tb-cool-box-info-default{background:#3186fd!important}.tb-cool-box-info-find{background:#ff0036!important}.tb-cool-box-info-find-rm{background-image:linear-gradient(#ffd000,#fcea9e)!important;color:#000!important}.tb-cool-box-info-empty{color:#000!important;background:#ccc!important}.tb-cool-box-info-translucent{opacity:.33}.mui-zebra-module .tb-cool-box-info{font-size:10px}.import-shangou-itemcell .tb-cool-box-area,.zebra-ziying-qianggou .tb-cool-box-area{right:10px;left:auto}.item_s_cpb .tb-cool-box-area{top:auto;bottom:10px}.j-mdv-chaoshi .m-floor .tb-cool-box-area a{width:auto;height:auto}.left-wider .proinfo-main{margin-bottom:40px}.detailHd .m-info{margin-bottom:20px}.tb-cool-quan-date{color:#233b3d;font-weight:400;font-size:12px}.tb-cool-area-has-date .tb-cool-quan-qrcode{margin-top:30px!important}.tb-cool-area-has-date .tb-cool-quan-title{margin-top:10px!important}.rm-div{-webkit-tap-highlight-color:rgba(0,0,0,0);line-height:1.42857143;color:#333;font-size:12px!important;font-family:"Open Sans",Arial,sans-serif;box-sizing:border-box;position:relative;min-height:1px;padding-right:15px;padding-left:0;float:left;width:350px}.rm-div span{-webkit-tap-highlight-color:rgba(0,0,0,0);font-family:"Open Sans",Arial,sans-serif;box-sizing:border-box;text-decoration:none;margin-bottom:0;font-weight:normal;text-align:left;white-space:nowrap;vertical-align:middle;touch-action:manipulation;user-select:none;background-image:none;background-color:#ffd000;padding:0 0 0 8px;line-height:30px;display:inline-block;width:215px;letter-spacing:.6px;font-size:16px;-webkit-font-smoothing:subpixel-antialiased;transition:border .25s linear,color .25s linear,background-color .25s linear;color:#000;border:0;border-radius:99px 0 0 99px;float:left}.rm-div .rm-btn{-webkit-tap-highlight-color:rgba(0,0,0,0);font-family:"Open Sans",Arial,sans-serif;box-sizing:border-box;text-decoration:none;margin-bottom:0;font-weight:normal;text-align:left;white-space:nowrap;vertical-align:middle;touch-action:manipulation;cursor:pointer;user-select:none;background-image:none;background-color:#ffd000;padding:0 0 0 8px;line-height:30px;display:inline-block;width:120px;letter-spacing:.6px;font-size:16px;-webkit-font-smoothing:subpixel-antialiased;transition:border .25s linear,color .25s linear,background-color .25s linear;color:#000;border:0;border-radius:99px 0 0 99px;float:left;background-color:#fff;border-radius:0 99px 99px 0;border:1px solid #c2baba;padding:0 0 0 8px;line-height:28.2px}.rm-div .trend-btn{-webkit-tap-highlight-color:rgba(0,0,0,0);font-family:"Open Sans",Arial,sans-serif;box-sizing:border-box;text-decoration:none;font-weight:normal;text-align:left;white-space:nowrap;vertical-align:middle;touch-action:manipulation;cursor:pointer;user-select:none;background-image:none;background-color:#ff0036!important;padding:0 0 0 8px;line-height:30px;display:inline-block;width:140px;letter-spacing:.6px;font-size:16px;-webkit-font-smoothing:subpixel-antialiased;transition:border .25s linear,color .25s linear,background-color .25s linear;color:#fff;border:0;border-radius:99px 99px 99px 99px!important;float:left;background-color:#fff;border-radius:0 99px 99px 0;padding:0 0 0 8px;line-height:27px}.rm-div .trend-btn-img{max-height:15px;vertical-align:middle!important}.float_div{width:200px;height:200px;background-color:red;position:absolute;top:100px;left:100px;float:left;z-index:99999}.qr-code-div{width:440px;border-radius:10px;display:inline-block}.trend-div{width:440px;border-radius:10px;display:inline-block}#qrcode{display:inline}.qr-code-div .title{float:right;font-size:13px;width:280px}.qr-code-div .foot{font-size:12px;text-align:middle;width:100%}.qr-code-div .qr-img{height:150px;width:150px}.frame_div{position:fixed;width:700px;height:450px;z-index:999999999;display:none;background-color:#fff;border-radius:10px;border:1px solid #c2baba;padding:15px;left:0;top:0;right:0;bottom:0;-webkit-box-shadow:#666 0 0 10px;-moz-box-shadow:#666 0 0 10px;box-shadow:#666 0 0 10px}#iframe_check{position:relative;height:100%;width:100%}.image-status{margin-left:10px;position:absolute;top:50%;transform:translateY(-50%);height:20px}.status-span{margin-left:35px;position:absolute;top:50%;transform:translateY(-50%)}.frame_div .cover{position:absolute;border-radius:10px;text-align:center;top:0;right:0;height:85px;width:100%;background-color:#fff;font-size:20px}.frame_div .cover img{text-align:center;height:45px;background-color:#fff;font-size:40px}.cover-close{position:absolute;top:0;right:0;height:40px;cursor:pointer}' + '.cover-chart-span{position:absolute;text-align:center;line-height:200px;height:200px}#chart{min-height:215px;margin-bottom:-20px}.div-helper-box .butyInput,.div-helper-box a,.div-helper-box select{font-size:12px;border:1px solid #ccc;padding:4px 0;border-radius:3px;padding-left:5px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}#imgPlanInfo{height:16px;width:16px;vertical-align:middle}.div-helper-box .butyInput:focus,.div-helper-box a:focus,.div-helper-box select:focus{border-color:#25a765;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6)}.div-helper-box{margin-top:5px;font-size:12px}.div-helper-box button{width:80px;height:35px;border-width:0;border-radius:5px;background:#25a765;cursor:pointer;outline:0;font-family:Microsoft YaHei;color:white;font-size:16px}.div-helper-box button:hover{background:#fc0;color:black}#button_delTask,#button_syn,#button_delPlan,#button_saveThisPage,#save_temporaryBlock,#temporaryBlock,#passThisPage,#permanentlyBlock,#button_saveSetting,#button_capture,#button_getCurrentTime,#button_newPlan,#importFromBbs,#shareToBbs,#button_editPlan,#button_exportPlan,#button_importPlan{background-color:#1e90ff;width:70px;height:25px;font-size:12px;font-weight:400!important;padding:0!important}#start_buy,#planCompleted{font-weight:400!important;padding:0!important}.dynamicDIV{vertical-align:baseline;border-bottom:1px solid #d6d6d6;font-size:12px}.dynamicSpan{vertical-align:middle;width:150px;display:inline-block;overflow:hidden;text-overflow:ellipsis;-o-text-overflow:ellipsis;white-space:nowrap;font-size:12px}.dynamicInput{vertical-align:middle;border-bottom:1px solid #12be02;border-top:0;border-left:0;border-right:0;width:150px;font-size:12px}.dynamicHostSpan{display:block;text-align:center;color:#000;background-color:#e0ffef;border-radius:10px}#button_add_mjd{display:none;background-color:#f30213;color:#fff;width:100px;height:25px;font-size:12px}#button_add_refresh{background-color:#f30213;color:#fff;width:80px;height:25px;font-size:12px;font-weight:400!important;padding:0!important}.swal_info,.swal-overlay{z-index:9999999999} .swal_info .swal-overlay{z-index:999999999;}.swal_info .swal-modal{z-index:999999999;background-color:rgba(63,255,106,0.69);border:3px solid white}.swal_info .swal-title{margin:0;font-size:16px;box-shadow:0 1px 1px rgba(0,0,0,0.21);margin-bottom:28px;background-color:#fc0;color:#000;border-radius:5px 5px 0 0}.swal_info .swal-text{background-color:#edffeb;padding:17px;border:1px solid #000;display:block;margin:22px;text-align:center;color:#25a765;border-radius:5px;font-weight:600;text-align:left}.swal_info .swal-footer{background-color:#f5f8fa;margin-top:32px;border-top:1px solid #e9eef1;overflow:hidden}.swal_info .swal-button--confirm{background-color:#f30213}#float_assistant{padding:3px;background-color:#fff;border:1px;border-radius:10px;position:fixed;top:8em;right:1em;text-align:left;display:inline-block;z-index:9999999;box-shadow:0 0 15px #4e4e4e} .callout{z-index:999;position:relative;width:150px;border:1px solid #f82800;background:#fff;border-radius:5px;margin-top:.5em !important;text-align:center}.callout::before{background-color: #f6792f;z-index:-1;content:"";position:absolute;top:-.41em;left:30px;padding:.35em;border:inherit;border-right:0;border-bottom:0;transform:rotate(45deg)}' document.getElementsByTagName("head").item(0).appendChild(style); var style = document.createElement("style"); style.type = "text/css"; style.innerHTML = '@charset "utf-8";.demo{width:410px;margin:0 auto}.stamp *{padding:0;margin:0;list-style:none;font-family:"Microsoft YaHei","Source Code Pro",Menlo,Consolas,Monaco,monospace}.stamp{width:340px;height:110px;padding:0 10px;position:relative;}.stamp:before{content:"";position:absolute;top:0;bottom:0;left:10px;right:10px;z-index:-1}.stamp i{position:absolute;left:20%;top:45px;height:190px;width:390px;background-color:rgba(255,255,255,.15);transform:rotate(-30deg);pointer-events:none}.stamp .par{float:left;padding:10px 10px;width:180px;border-right:2px dashed rgba(255,255,255,.3);text-align:left;height:90px}.stamp .par p{color:#fff;font-size:16px;line-height:21px}.stamp .par span{font-size:40px;color:#fff;margin-right:5px;line-height:65px}.stamp .par .sign{font-size:25px}.stamp .par sub{position:relative;color:rgba(255,255,255,.8)}.stamp .copy{display:inline-block;padding:21px 14px;width:100px;vertical-align:text-bottom;font-size:30px;color:#fff;text-align:center;line-height:initial}.stamp .copy p{font-size:16px;margin-top:15px}.stamp01{background:radial-gradient(rgba(0,0,0,0) 0,rgba(0,0,0,0) 5px,#f39b00 5px);background-size:15px 15px;background-position:9px 3px}.stamp01:before{background-color:#f39b00}.stamp02{background:radial-gradient(transparent 0,transparent 5px,#d24161 5px);background-size:15px 15px;background-position:9px 3px}.stamp02:before{background-color:#d24161}.stamp03{background:radial-gradient(transparent 0,transparent 5px,#7eab1e 5px);background-size:15px 15px;background-position:9px 3px}.stamp03:before{background-color:#7eab1e}.stamp03 .copy{padding:10px 6px 10px 12px;font-size:24px}.stamp03 .copy p{font-size:14px;margin-top:5px;margin-bottom:8px}.stamp03 .copy a{background-color:#fff;color:#333;font-size:14px;text-decoration:none;padding:5px 10px;border-radius:3px;display:block}.stamp04{width:320px;background:radial-gradient(rgba(0,0,0,0) 0,rgba(0,0,0,0) 4px,#f5610b 4px);border-radius:3px}.stamp04:before{background-color:#f5610b;left:5px;right:5px}.stamp04 .copy{padding:8px 4px 8px 10px;font-size:20px}.stamp04 .copy p{font-size:12px;margin-top:3px;margin-bottom:5px}.stamp04 .copy a{background-color:#fff;color:#333;font-size:14px;text-decoration:none;padding:5px 10px;border-radius:3px;display:block;z-index:200}'; document.getElementsByTagName("head").item(0).appendChild(style); var style = document.createElement("style"); style.type = "text/css"; style.innerHTML = 'div.card-tabs-bar a{padding:5px;padding-bottom:1px;border:1px solid transparant;color:#575b66;text-decoration:none;margin-left:5px;outline:0}div.card-tabs-bar a:first-child{margin-left:10px}div.card-tabs-bar a:hover{text-decoration:underline}div.card-tabs-bar a.active{border-bottom:0;display:inline-block;color:black;font-weight:bold;border-radius:4px 4px 0 0;padding-top:6px;margin-bottom:-10px;background:#fff}div.card-tabs-bar a.active:hover{text-decoration:none}div.card-tabs-bar.titles{margin-top:-10px}div.card-tabs-bar.titles a{font-size:17px}div.card-tabs-stack div[data-tab]{display:none;border-top:0;padding:10px}div.card-tabs-stack div[data-tab]:first-child{display:block}div.card-tabs-bar.inset{border-bottom:1px solid #e5e5e5;border-radius:3px}div.card-tabs-bar.inset a.active{background-color:#fafafa;box-shadow:inset 0 0 10px rgba(0,0,0,0.05)}div.card-tabs-stack.inset div[data-tab]{padding:10px;border-top:0;border-radius:3px;box-shadow:inset 0 0 10px rgba(0,0,0,0.05)}div.card-tabs-bar.graygreen{border-bottom:1px solid #e5e5e5}div.card-tabs-bar.graygreen a{padding:15px;border-radius:0;margin:0;padding-bottom:10px;margin-bottom:-2px;font-size:17px}div.card-tabs-bar.graygreen a.active{background-color:#fafafa;border-top:4px solid #2cc185}div.card-tabs-stack.graygreen div[data-tab]{padding:10px;background-color:#fafafa;border:1px solid #e5e5e5;border-top:0}div.card-tabs-bar.wiki{border-radius:0;text-align:left;display:inline-block}div.card-tabs-bar.wiki a{display:inline-block;vertical-align:baseline;border-radius:0;margin:0;padding-bottom:10px;margin-bottom:-1px;margin-left:2px;font-size:12px;background:#fefefe;background:-moz-linear-gradient(top,#fefefe 0,#fdcd97 100%);background:-webkit-linear-gradient(top,#fefefe 0,#fdcd97 100%);background:linear-gradient(to bottom,#fefefe 0,#fdcd97 100%);border-top:#ff8700 1px solid;border-left:#ff8700 1px solid;border-right:#ff8700 1px solid;cursor: pointer}div.card-tabs-bar.wiki a:first-child{border-left:#ff8700 1px solid;margin-left:0}div.card-tabs-bar.wiki a:last-child{border-right:#ff8700 1px solid}div.card-tabs-bar.wiki a.active{border-top:1px solid #ff8700;border-left:1px solid #ff8700;border-right:1px solid #ff8700;background:white;border-bottom:1px solid white}div.card-tabs-stack.wiki div[data-tab]{display:"none"!important;width:fit-content;width:-webkit-fit-content;width:-moz-fit-content;padding:13px;border:1px solid #ff8700;border-radius:0 8px 8px 8px;text-align:left;background-color:white}'; document.getElementsByTagName("head").item(0).appendChild(style); //#endregion obj.get_date_now_ms = function () { if (typeof (Date.now()) == "number") { return Date.now(); } else if (typeof (Date.now()) == "object") { console.log(Date.now().getTime()); return Date.now().getTime(); } else { return Date.now(); } } // 对Date的扩展,将 Date 转化为指定格式的String // 月(M)、日(d)、小时(H)、分(m)、秒(s)、季度(q) 可以用 1-2 个占位符, // 年(y)可以用 1-4 个占位符,毫秒(S)只能用 1 个占位符(是 1-3 位的数字) // 例子: // (new Date()).Format("yyyy-MM-dd HH:mm:ss.S") ==> 2006-07-02 08:09:04.423 // (new Date()).Format("yyyy-M-d H:m:s.S") ==> 2006-7-2 8:9:4.18 Date.prototype.Format = function (fmt) { //author: meizz var o = { "M+": this.getMonth() + 1, //月份 "d+": this.getDate(), //日 "h+": this.getHours(), //小时 "m+": this.getMinutes(), //分 "s+": this.getSeconds(), //秒 "q+": Math.floor((this.getMonth() + 3) / 3), //季度 "S": this.getMilliseconds() //毫秒 }; if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length)); for (var k in o) if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length))); return fmt; } console.log('▽载入时间▽'); console.log(obj.get_date_now_ms()); obj.swal_info = function (title, text, button, Func) { if (!arguments[0]) title = "SYS-抢购助手提醒"; if (!arguments[2]) button = "确认"; swal({ className: "swal_info", title: title, text: text, button: button, }).then((value) => { if (value == null) return; if (typeof (Func) == 'function') { Func(); } }); } obj.swal_fadeAway = function (text, time_ms) { if (!arguments[1]) time_ms = 1000; swal(text, { buttons: false, timer: time_ms, }); } obj.getObjKeys = function (obj) { var arry = []; for (var i in obj) { arry.push(i); } return arry; } obj.setVirtualCookie = function (name, active, start_time, theLifeCycle) { var virtualCookie = GM_getValue('virtualCookie'); if (virtualCookie == null) { virtualCookie = {}; } if (!virtualCookie.hasOwnProperty(name)) { virtualCookie[name] = {}; } if (active != 'keep') { virtualCookie[name]['active'] = active; } if (start_time != 'keep') { virtualCookie[name]['start_time'] = start_time; } if (theLifeCycle != 'keep') { virtualCookie[name]['theLifeCycle'] = theLifeCycle; } virtualCookie[name]['property1'] = ''; virtualCookie[name]['property2'] = ''; virtualCookie[name]['property3'] = ''; GM_setValue('virtualCookie', virtualCookie); } obj.getVirtualCookieByName = function (name) { var virtualCookie = GM_getValue('virtualCookie'); if (virtualCookie == null) { virtualCookie = {}; } if (virtualCookie.hasOwnProperty(name)) { return virtualCookie[name]; } else { return null; } } obj.judgmentVirtualCookie = function (name) { var judgment = obj.getVirtualCookieByName(name); if (judgment == null) { return false; } else { if (obj.get_date_now_ms() - judgment['start_time'] > judgment['theLifeCycle']) { obj.setVirtualCookie(name, '0', 'keep', 'keep'); return false; } else { return true; } } } obj.delVirtualCookie = function (name) { console.log('----------判断删除cookie----------'); console.log(name); var del = obj.getVirtualCookieByName(name); if (del != null) { delete del[name]; } GM_setValue('virtualCookie', del); } obj.captureButtonClick = function (cssPath, delay) { if (cssPath != 'refresh_page') { setTimeout(() => { try { if (document.querySelector(cssPath)) { document.querySelector(cssPath).click(); } } catch (e) { console.log('发现异常,请忽略!') } }, delay); } else { setTimeout(() => { location.reload(); }, delay); } } //#region 读取抢购助手方案信息 var obj_plans = GM_getValue('obj_plans'); if (obj_plans == undefined) { var obj_plans = {}; } else { var obj_plans = JSON.parse(obj_plans); console.log('▽所有方案▽'); console.log(obj_plans); } //针对#东快速下单,做个类似cookie的东东 var page_type = ''; if (obj.getVirtualCookieByName('mjdLogin') == null) { obj.setVirtualCookie('mjdLogin', '0', '0', 2 * 60 * 60 * 1000); } if (document.referrer.indexOf("plogin.m.jd.com") > -1) { obj.setVirtualCookie('mjdLogin', '1', obj.get_date_now_ms(), 'keep'); } var v_cookie = GM_getValue('virtualCookie'); console.log('▽所有任务▽'); console.log(v_cookie); //#endregion obj.importPlan = function (from, value) { // var plan_str = value.replace(/\{/g, "\n{"); // var plan_str = value.replace(/\}/g, "\n}"); // plan_str = plan_str.replace(/\[/g, "\n["); // plan_str = plan_str.replace(/\]/g, "\n]"); // plan_str = plan_str.replace(/\,/g, "\n"); // swal(plan_str); if (from == 'plugin') { try { var obj_plan_tmp = JSON.parse(value); var arry_import_planid = obj.getObjKeys(obj_plan_tmp); obj_plans[arry_import_planid[0]] = obj_plan_tmp[arry_import_planid[0]]; GM_setValue("obj_plans", JSON.stringify(obj_plans)); location.reload(); swal('导入成功'); } catch (e) { swal(e.message); } } else if (from == 'bbs') { try { obj.swal_info('确认导入方案吗?', value, '确认导入', function () { var obj_plan_tmp = JSON.parse(value); var arry_import_planid = obj.getObjKeys(obj_plan_tmp); obj_plans[arry_import_planid[0]] = obj_plan_tmp[arry_import_planid[0]]; GM_setValue("obj_plans", JSON.stringify(obj_plans)); location.reload(); swal('导入成功'); }) } catch (e) { swal(e.message); } } } //#region 趋势图参数 var chart; var options = { title: { // 显示折现图的title text: '花前省一省-商品历史价格走势图', fontSize: '12px' }, markers: { size: 0, colors: ['#fbb5b0'], }, chart: { height: 200, width: "100%", type: "area", animations: { initialAnimation: { enabled: false } } }, series: [ { name: "价格", data: [] } ], xaxis: { type: "datetime", labels: { datetimeFormatter: { year: 'yyyy', month: 'MM \-yy', day: 'yyyy-MM-dd', hour: 'HH:mm' } } }, stroke: { curve: 'smooth', width: [0.5, 0.5, 0.5] }, colors: ['#F44336'], dataLabels: { enabled: false, style: { colors: ['#000000'] } }, tooltip: { x: { format: 'yyyy-MM-dd' }, y: [{ formatter: function (y) { if (typeof y !== "undefined") { return y.toFixed(0) + "元"; } return y; } }] } } //#endregion obj.getNewVersion = function () { var get_ver_url; get_ver_url = "https://www.youyizhineng.top/query_coupon/get_version.php"; GM_xmlhttpRequest({ url: get_ver_url, method: 'GET', timeout: 10000, headers: { 'Content-Type': 'application/json', 'Accept': 'application/json', 'Cache-Control': 'public' }, onload: function (xhr) { const json = JSON.parse(xhr.responseText); const data = json; if (version < data.ver) { $2("#pluginUpdate").css("display", "block"); $2("#pluginUpdate").css("color", data.color); $2("#pluginUpdate").html(data.text); $2("#pluginUpdate").click(function () { GM_openInTab(data.url, { active: true, setParent: true }); }); } else { $2("#pluginUpdate").parent().css("display", "none"); } } }); } $2.fn.cardTabs = function (options) { var mainClass = $2(this).attr('class'); var activeCount = 0; var settings = $2.extend({ theme: '', }, options); // Initializing var htmlInner = $2(this).html(); var stack = $2('<div />').addClass('card-tabs-stack').html(htmlInner); var bar = $2('<div />').addClass('card-tabs-bar'); $2('.' + mainClass).children('div[data-tab]').each(function () { bar.append($2('<a />').data('tab', $2(this).data('tab')).append($2(this).data('tab'))); }); $2('.' + mainClass).html('').append(bar).append(stack); // Fixing the theme if (settings.theme != '') { $2('.' + mainClass + ' .card-tabs-bar').addClass(settings.theme); $2('.' + mainClass + ' .card-tabs-stack').addClass(settings.theme); } function toggleTab(obj) { $2('.' + mainClass + " .card-tabs-stack div[data-tab][data-tab='" + obj.data('tab') + "']").show(); $2('.' + mainClass + " .card-tabs-stack div[data-tab][data-tab!='" + obj.data('tab') + "']").hide(); } // Checking whether we have to set a tab as active $2('.' + mainClass + ' .card-tabs-stack').children('div[data-tab]').each(function () { if ($2(this).hasClass('active')) { $2('.' + mainClass + " .card-tabs-bar a[data-tab='" + $2(this).data('tab') + "']").addClass('active'); toggleTab($2(this)); $2(this).removeClass('active'); activeCount++; } }); // Otherwise, it's the first one, and the first tab in the bar needs to be active if (activeCount == 0) { $2('.' + mainClass + ' .card-tabs-bar a:first-child').addClass('active'); } $2('.' + mainClass + ' .card-tabs-bar a').click(function () { $2('.' + mainClass + ' .card-tabs-bar a').removeClass('active'); $2(this).addClass('active'); toggleTab($2(this)); }); return this; }; obj.hasSelectPlan = function () { var select_val = $2("#panicBuyingPlan").val(); if (select_val == "---请选择---") { obj.swal_info(null, "您没有选择方案!"); return false; } else { return true; } } obj.addPlan = function (value_str) { var obj_plan_tmp = JSON.parse(value_str); var arry_import_planid = obj.getObjKeys(obj_plan_tmp); obj_plans[arry_import_planid[0]] = obj_plan_tmp[arry_import_planid[0]]; GM_setValue("obj_plans", JSON.stringify(obj_plans)); } //切换tab obj.select_tab = function (tab_val, display, click) { var all_tabs = $2('.card-tabs-bar.wiki')[0].childNodes; for (let i = 0; i < all_tabs.length; i++) { if (all_tabs[i].text == tab_val) { all_tabs[i].style.display = display; if (click == 1) { all_tabs[i].click(); } break; } } }; //列表页面操作 obj.initSearchHtml = function (selectorList) { setInterval(function () { selectorList.forEach(function (selector) { obj.initSearchItemSelector(selector); }); }, 1000); }; obj.initSearchItemSelector = function (selector) { $2(selector).each(function () { obj.initSearchItem(this); }); }; obj.addClickTask = function (keys) { console.log(keys); var time_line = 0; var refresh_key = ''; while (keys.length) { for (let i = 0; i < keys.length; i++) { keys[i]['press_num'] = keys[i]['press_num'] - 1; //todo 如果是刷新,直接跳出 if (keys[i]['css_path'] == "refresh_page") { refresh_key = keys[i]; continue; } time_line = time_line + Number(keys[i]['press_interval']); var cssPath = keys[i]['css_path']; obj.captureButtonClick(cssPath, time_line); console.log('添加任务:', '时刻' + time_line, keys[i]['key_name'], keys[i]['css_path']); } for (let i = keys.length - 1; i >= 0; i--) { if (keys[i]['press_num'] == 0) { keys.splice(i, 1); } } } if (refresh_key != '') { time_line = time_line + Number(refresh_key['press_interval']); console.log('添加任务', refresh_key['key_name'], '时刻' + time_line); // return; obj.captureButtonClick(refresh_key['css_path'], time_line); } } obj.initSearchItem = function (selector) { var $this = $2(selector); var nid; if ($this.hasClass("tb-cool-box-already")) { return; } else { $this.addClass("tb-cool-box-already"); } if (obj.site_type() == "taobao_lst_page") { nid = $this.attr("data-id"); if (!obj.isVailidItemId(nid)) { nid = $this.attr("data-itemid"); } if (!obj.isVailidItemId(nid)) { if ($this.attr("href")) { nid = location.protocol + $this.attr("href"); } else { var $a = $this.find("a"); if (!$a.length) { return; } nid = $a.attr("data-nid"); if (!obj.isVailidItemId(nid)) { if ($a.hasClass("j_ReceiveCoupon") && $a.length > 1) { nid = location.protocol + $2($a[1]).attr("href"); } else { nid = location.protocol + $a.attr("href"); } } } } } else if (obj.site_type() == "jingdong_lst_page") { nid = $this.attr("data-sku"); if (typeof (nid) == "undefined") { nid = $this.find('.price').attr("data-skuid"); } if (!obj.isVailidItemId(nid)) { nid = $this.find(".p-operate").find("a").attr("skuid"); } } else if (obj.site_type() == "vip_list_page") { nid = $this.attr("data-product-id"); if (typeof (nid) == "undefined") { nid = $this.find('.c-goods-item__sale-price').html().split("</span>")[1]; } if (!obj.isVailidItemId(nid)) { // nid = $this.find(".p-operate").find("a").attr("skuid"); } } else if (obj.site_type() == "kaola_list_page") { nid = $this.find('a').eq(0).attr("href").split("/product/")[1].split(".")[0]; } if (obj.isValidNid(nid)) { obj.appenBasicQueryHtml($this, nid); } }; //图片上显示提示图标 obj.initSearchEvent = function () { $2(".tb-cool-box-area").live("click", function () { var Show_hide_div_id = $2(this).attr("name"); var a = document.getElementsByName(Show_hide_div_id)[0].style.opacity; for (let index = 0; index < document.getElementsByName(Show_hide_div_id).length; index++) { if (a == "" || a == "1") { document.getElementsByName(Show_hide_div_id)[index].style.opacity = "0.2"; } else { document.getElementsByName(Show_hide_div_id)[index].style.opacity = "1"; } } }); $2(".tb-cool-box-area-rm").live("click", function () { var Show_hide_div_id = $2(this).attr("name"); var a = document.getElementsByName(Show_hide_div_id)[0].style.opacity; for (let index = 0; index < document.getElementsByName(Show_hide_div_id).length; index++) { if (a == "" || a == "1") { document.getElementsByName(Show_hide_div_id)[index].style.opacity = "0.2"; } else { document.getElementsByName(Show_hide_div_id)[index].style.opacity = "1"; } } }); }; obj.basicQuery = function () { setInterval(function () { $2(".tb-cool-box-wait").each(function () { obj.basicQueryItem(this); }); }, 300); }; obj.basicQuery_list = function () { setInterval(function () { if ($2(".tb-cool-box-wait").length > 0) { query_item_list = query_item_list.substr(0, query_item_list.length - 1); obj.update_list_data(query_item_list); query_item_list = ''; } if ($2(".tb-cool-box-wait-rm").length > 0 && query_data_list_back != '') { $2(".tb-cool-box-wait-rm").each(function () { obj.basicQueryListItem(this, query_data_list_back, 'refresh_cashback'); }); query_data_list_back = ''; } }, 500); }; obj.update_list_data = function (query_item_list) { if (query_item_list == '') { return; } var operate = ''; if (obj.site_type() == "jingdong_lst_page") { operate = "quert_list_jd"; } else if (obj.site_type() == "vip_list_page") { operate = "quert_list_vip"; } else if (obj.site_type() == "taobao_lst_page") { operate = "quert_list_tb"; } else if (obj.site_type() == "kaola_list_page") { operate = "kaola_list"; } var url = "https://www.youyizhineng.top/query_coupon/query_coupon_v210120.php?operate=" + operate + "&itemid_list=" + query_item_list; console.log(url); $2.getJSON(url, function (data) { // console.log(data); $2(".tb-cool-box-wait").each(function () { obj.basicQueryListItem(this, data, ''); }); query_data_list_back = data; }); } obj.appenBasicQueryHtml = function (selector, nid) { if (obj.site_type() == "jingdong_lst_page" || obj.site_type() == "vip_list_page" || obj.site_type() == "taobao_lst_page" || obj.site_type() == "kaola_list_page") { query_item_list = query_item_list + nid + ","; } selector.append( '<div class="tb-cool-box-area tb-cool-box-wait" data-nid="' + nid + '" name="c_div_' + nid + '"><a class="tb-cool-box-info tb-cool-box-info-default" title="点击查询">查询中...</a></div>' ); selector.append( '<div class="tb-cool-box-area-rm tb-cool-box-wait-rm" data-nid="' + nid + '" name="r_div_' + nid + '"><a class="tb-cool-box-info tb-cool-box-info-default" title="点击查询">查询中...</a></div>' ); }; obj.basicQueryItem = function (selector) { var $this = $2(selector); var url; $this.removeClass("tb-cool-box-wait"); var nid = $this.attr("data-nid"); url = "https://www.youyizhineng.top/query_coupon/query_coupon_v210120.php?operate=quert_single&itemid=" + nid; var xhr1 = new XMLHttpRequest();//第一步:新建对象 xhr1.open('GET', url, true);//第二步:打开连接 将请求参数写在url中 xhr1.send();//第三步:发送请求 将请求参数写在URL中 /** * 获取数据后的处理程序 */ xhr1.onreadystatechange = function () { if (xhr1.readyState == 4 && xhr1.status == 200) { var res = xhr1.responseText;//获取到json字符串,解析 var data = JSON.parse(res); if (data.couponmoney != 0 || data.return_money_rate != 0) { obj.showBasicQueryFind($this, data.couponmoney, data.return_money_rate, data.url2, ''); } else { obj.showBasicQueryEmpty($this); } } } }; obj.basicQueryListItem = function (selector, data, flag) { if (flag == 'refresh_cashback') { var $this = $2(selector).prev(); } else { var $this = $2(selector); } var url; var each_couponmoney; var each_return_money_rate; var each_return_money; var each_url2; if ($this.hasClass("tb-cool-box-wait")) { $this.removeClass("tb-cool-box-wait"); } else { return; } // $this.next().removeClass("tb-cool-box-wait-rm"); var nid = $this.attr("data-nid"); if (typeof (data[nid]) == "undefined") { each_couponmoney = 0; each_return_money_rate = 0; each_url2 = ''; } else { each_couponmoney = data[nid].couponmoney; each_return_money_rate = data[nid].return_money_rate; if (obj.site_type() == "vip_list_page" || obj.site_type() == "kaola_list_page") { each_return_money = data[nid].return_money; } each_url2 = data[nid].url2; } if (each_couponmoney != 0 || each_return_money_rate != 0) { obj.showBasicQueryFind($this, each_couponmoney, each_return_money_rate, each_url2, each_return_money) } else { obj.showBasicQueryEmpty($this); } }; obj.showBasicQueryFind = function (selector, couponMoney, rm_Money, url2, return_money) { var price; if (selector.find(".tb-cool-box-info-find").length > 0) { return; } if (couponMoney == "0") { selector.html( '<a target="_blank" class="tb-cool-box-info tb-cool-box-info-find" title="显示/隐藏">无券</a>' ); } else { selector.html( '<a target="_blank" class="tb-cool-box-info tb-cool-box-info-find" title="显示/隐藏">有券(减' + couponMoney + "元)</a>" ); } var url = location.href; if (url.indexOf("//s.taobao.com/search") > 0 || url.indexOf("//s.taobao.com/list") > 0) { price = selector.prev().find("strong").html(); if (url2 != '') { selector.prev().find(".J_ClickStat").attr("href", url2); selector.prev().prev().find(".pic").find("a").attr("href", url2); } } else if (url.indexOf("//list.tmall.com/search_product.htm") > 0) { price = selector.prev().find("em").attr('title'); if (price > 0) { price = selector.prev().find("em").attr('title'); if (url2 != '') { selector.prev().find(".productTitle").find("a").attr("href", url2); selector.prev().find(".productImg").attr("href", url2); } } else { price = selector.prev().find(".item-price").find("strong").html(); } } else if (url.indexOf("//list.tmall.hk/search_product.htm") > 0) { price = selector.prev().find("em").attr('title'); if (url2 != '') { selector.prev().find(".productTitle").find("a").attr("href", url2); selector.prev().find(".productImg").attr("href", url2); } } else if (url.indexOf("//maiyao.liangxinyao.com/shop/view_shop.htm") > 0) { price = selector.prev().prev().find(".c-price").html(); if (price > 0) { price = selector.prev().prev().find(".c-price").html(); if (url2 != '') { selector.prev().prev().find("a").attr("href", url2); selector.prev().prev().prev().find("a").attr("href", url2); } } else { price = selector.prev().find(".c-price").html(); if (url2 != '') { selector.prev().find("a").attr("href", url2); selector.prev().prev().find("a").attr("href", url2); } } } else if (url.indexOf("//search.jd.com/Search") > 0 || url.indexOf("//list.jd.com/list.html") > 0 || url.indexOf("//i-search.jd.com/Search") > 0) { price = selector.prev().find(".p-price").find("i").html(); if (price > 0) { price = selector.prev().find(".p-price").find("i").html(); } } else if (url.toLowerCase().indexOf("//search.jd.hk/search".toLowerCase()) > 0) { price = selector.prev().find(".price").find("span").html().split('>')[2]; } else if (url.toLowerCase().indexOf("//www.jd.com/xinkuan".toLowerCase()) > 0) { price = selector.prev().find(".price").find("strong").html().split('¥')[1]; if (price == "暂无报价") { return; } } if (obj.site_type() != "vip_list_page" && obj.site_type() != "kaola_list_page") { var rm_Money_clc = Math.round(Math.floor((price - couponMoney) * rm_Money * 1000) / 10) / 100; } else { var rm_Money_clc = Math.floor(return_money * 100) / 100; } if (rm_Money_clc < 0) { rm_Money_clc = Math.round(Math.floor(price * rm_Money * 1000) / 10) / 100; } if (rm_Money_clc != 0) { selector.next().html( '<a target="_blank" class="tb-cool-box-info tb-cool-box-info-find-rm" title="使用APP「花前省一省」扫码宝贝详情页二维码可得返现">返现(约' + rm_Money_clc + "元)</a>" ); } else { selector.next().html( '<a target="_blank" class="tb-cool-box-info tb-cool-box-info-find" title="显示/隐藏">无返现</a>' ); } }; // 最简单数组去重法 obj.uniqueArr = function (array) { var n = []; //一个新的临时数组 //遍历当前数组 for (var i = 0; i < array.length; i++) { //如果当前数组的第i已经保存进了临时数组,那么跳过, //否则把当前项push到临时数组里面 if (n.indexOf(array[i]) == -1 && array[i] != '') n.push(array[i]); } return n; } obj.isNumber = function (val) { var regPos = /^\d+(\.\d+)?$/; //非负浮点数 var regNeg = /^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$/; //负浮点数 if (regPos.test(val) || regNeg.test(val)) { return true; } else { return false; } } obj.showBasicQueryEmpty = function (selector) { // selector.addClass("tb-cool-box-info-translucent"); selector.html('<a href="javascript:void(0);" class="tb-cool-box-info tb-cool-box-info-empty" style="opacity:0.5;" title="切换透明度">暂无优惠</a>'); selector.next().html('<a href="javascript:void(0);" class="tb-cool-box-info tb-cool-box-info-empty" style="opacity:0.5;" title="切换透明度">暂无返现</a>'); }; obj.site_type = function () { var url = location.href; if ( url.indexOf("//item.taobao.com/item.htm") > 0 || url.indexOf("//detail.tmall.com/item.htm") > 0 || url.indexOf("//chaoshi.detail.tmall.com/item.htm") > 0 || url.indexOf("//detail.tmall.hk/hk/item.htm") > 0 || url.indexOf("//detail.liangxinyao.com/item.htm") > 0 || url.indexOf("//world.tmall.com") > 0 || url.indexOf("//detail.tmall.hk/item.htm") > 0 ) { return "taobao_details_page"; } else if ( url.indexOf("//maiyao.liangxinyao.com/shop/view_shop.htm") > 0 || url.indexOf("//list.tmall.com/search_product.htm") > 0 || url.indexOf("//s.taobao.com/search") > 0 || url.indexOf("//list.tmall.hk/search_product.htm") > 0 ) { return "taobao_lst_page"; } else if ( url.indexOf("//search.jd.com/Search") > 0 || url.indexOf("//search.jd.hk/search") > 0 || url.indexOf("//www.jd.com/xinkuan") > 0 || url.indexOf("//list.jd.com/list.html") > 0 || url.indexOf("//i-search.jd.com/Search") > 0 || url.indexOf("//search.jd.hk/Search") > 0 ) { return "jingdong_lst_page"; } else if ( url.indexOf("//item.jd.hk") > 0 || url.indexOf("//pcitem.jd.hk") > 0 || url.indexOf("//i-item.jd.com") > 0 || url.indexOf("//item.jd.com") > 0 ) { return "jingdong_details_page"; } else if ( url.indexOf("//category.vip.com/suggest.php") > 0 || url.indexOf("//list.vip.com") > 0 ) { return "vip_list_page"; } else if ( url.indexOf("//detail.vip.com") > 0 ) { return "vip_detail_page"; } else if ( url.indexOf("//m.vip.com/product") > 0 ) { return "vip_detail_page_m"; } else if ( url.indexOf("//goods.kaola.com/product") > 0 || url.indexOf("//goods.kaola.com.hk/product") > 0 ) { return "kaola_detail_page"; } else if ( url.indexOf("//search.kaola.com/search.html") > 0 ) { return "kaola_list_page"; } else if ( url.indexOf("//product.suning.com") > 0 ) { return "suning_detail_page"; } else if ( url.indexOf("//www.vmall.com/product") > 0 ) { return "huawei_detail_page"; } } obj.platform = function () { var url = location.host; if ( url.indexOf("taobao.com") > 0 || url.indexOf("tmall.com") > 0 || url.indexOf("tmall.hk") > 0 || url.indexOf("liangxinyao.com") > 0 || url.indexOf("alipay.com") > 0 ) { return "taobao"; } else if ( url.indexOf("jd.com") > 0 || url.indexOf("jd.hk") > 0 ) { return "jingdong"; } else if ( url.indexOf("vip.com") > 0 ) { return "vip"; } else if ( url.indexOf("kaola.com") > 0 ) { return "kaola"; } else if ( url.indexOf("suning.com") > 0 ) { return "suning"; } else if ( url.indexOf("vmall.com") > 0 ) { return "huawei"; } else if ( url.indexOf("xiaomiyoupin.com") > 0 ) { return "xiaomiyoupin"; } else if ( url.indexOf("pinduoduo.com") > 0 ) { return "pinduoduo"; } } obj.isDetailPageTaoBao = function (url) { if ( url.indexOf("//item.taobao.com/item.htm") > 0 || url.indexOf("//detail.tmall.com/item.htm") > 0 || url.indexOf("//chaoshi.detail.tmall.com/item.htm") > 0 || url.indexOf("//detail.tmall.hk/hk/item.htm") > 0 ) { return true; } else { return false; } }; obj.DetailPageTB_or_TM_or_JD = function () { var url = location.href; if (url.indexOf("//item.taobao.com/item.htm") > 0 || url.indexOf("//detail.liangxinyao.com/item.htm") > 0 ) { return 1; } else if ( url.indexOf("//detail.tmall.com/item.htm") > 0 || url.indexOf("//chaoshi.detail.tmall.com/item.htm") > 0 || url.indexOf("//detail.tmall.hk/hk/item.htm") > 0 || url.indexOf("//world.tmall.com") > 0 || url.indexOf("//detail.tmall.hk/item.htm") > 0 ) { return 2; } else if (obj.site_type() == "jingdong_details_page") { return 3; } }; obj.isVailidItemId = function (itemId) { if (!itemId) { return false; } var itemIdInt = parseInt(itemId); if (itemIdInt == itemId && itemId > 10000) { return true; } else { return false; } }; obj.isValidNid = function (nid) { if (!nid) { return false; } else if (nid.indexOf("http") >= 0) { if (obj.isDetailPageTaoBao(nid) || nid.indexOf("//detail.ju.taobao.com/home.htm") > 0) { return true; } else { return false; } } else { return true; } }; obj.get_tb_price = function (price_str) { var price = ''; if (price_str != null) { if (price_str.indexOf("-") > 0) { price = price_str.split("-")[0]; } else { price = price_str; } } return price; }; obj.get_data = function () { // alert(1); var operate = ''; if (obj.site_type() == "vip_detail_page") { if (location.href.indexOf("wq=1") > 0) { return; } operate = "get_info_vip&vip_type=1"; } else if (obj.site_type() == "vip_detail_page_m") { var arry_url_tmp = location.href.split('m.vip.com/product'); window.location.href = arry_url_tmp[0] + 'detail.vip.com/detail' + arry_url_tmp[1]; stop = '1'; return; } var url = "https://www.youyizhineng.top/query_coupon/query_coupon_v210120.php?operate=get_info&data_i=" + encodeURIComponent(location.href); console.log(url); console.log('============================='); $2.ajax({ url: url, async: false, timeout: 500, // dataType: "json", success: function (data) { try { // console.log(data); var data_tmp = JSON.parse(data); if (obj.site_type() == "taobao_details_page") { if (data_tmp.data_ii > 0) { return; } } if (data_tmp.data_i != null) { window.location.href = data_tmp.data_i; stop = '1'; } } catch { } } }) }; obj.generate_trend_data = function (all_begin_time, all_line) { if (all_line.length > 0) { for (let index = 0; index < all_line.length; index++) { var data_tmp = {}; var newTime = new Date(all_begin_time); newTime = newTime.setDate(newTime.getDate() + index); newTime = new Date(newTime); var newTime_d = (newTime.getMonth() + 1).toString().padStart(2, '0') + "-" + newTime.getDate().toString().padStart(2, '0') + "-" + newTime.getFullYear() + " GMT"; data_tmp["x"] = newTime_d; data_tmp["y"] = all_line[index]; options.series[0].data.push(data_tmp); } } }; obj.query_trend_data = function () { //获得价格波动var url = location.href; var gwdUrl = "https://browser.gwdang.com/extension/price_towards?url=" + encodeURIComponent(location.href); GM_xmlhttpRequest({ url: gwdUrl, method: 'GET', timeout: 10000, headers: { 'Content-Type': 'application/json', 'Accept': 'application/json', 'Cache-Control': 'public' }, onload: function (res) { //loadingMask.parentNode.removeChild(mask); const json = JSON.parse(res.responseText); const data = json; if (data.is_ban == null) { // console.log(typeof (data.store)); var all_line; var all_begin_time; if ($2("#float_div").css("display") == "block") { location.reload(); } if (typeof (data.store) != "undefined" && data.store[0].all_line != null) { all_begin_time = data.store[0].all_line_begin_time; all_line = data.store[0].all_line; if (all_line.length != 0) { obj.generate_trend_data(all_begin_time, all_line); } else { options.title.text = "花前省一省-本商品暂无历史数据"; } } else { options.title.text = "花前省一省-本商品暂无历史数据"; } // console.log(check_url); } else { options.title.text = "本次需要验证:【点击上方按钮进行验证】"; check_url = data.action.to; } obj.add_iframe(); } }); } obj.add_iframe = function () { if (options.title.text == "花前省一省-本商品暂无历史数据") { $2(".image-status").attr("title", "历史数据加载成功"); $2(".image-status").attr("src", "https://s1.ax1x.com/2020/10/26/BnYQkn.png"); $2(".status-span").html("经查询,本商品暂无历史数据"); $2("#coupon-wrap-trend").css("display", "none"); $2(".trend-div").css("display", "none"); } else if (options.series[0].data.length > 0) { $2(".image-status").attr("title", "历史数据加载成功"); $2(".image-status").attr("src", "https://s1.ax1x.com/2020/10/26/BnYQkn.png"); chart = new ApexCharts(document.querySelector("#chart"), options); chart.render(); } else { //在chart上提示显示文字 $2(".trend-div").append('<span class="cover-chart-span"></span>'); $2(".image-status").attr("title", "需要验证"); $2(".image-status").attr("src", "https://s1.ax1x.com/2020/10/26/BnYkfP.gif"); $2(".image-status").css("cursor", "pointer"); $2("#coupon-wrap-trend").css("display", "none"); $2(".status-span").html("← 点击左侧按钮验证"); $2(".image-status").click(function (event) { $2("body").append('<div id="float_div" class="frame_div"></div>'); document.getElementById("float_div").style.left = (window.screen.width - 800) / 2 + "px"; document.getElementById("float_div").style.top = (window.screen.height - 500) / 2 + "px"; $2("#float_div").append('<iframe id="iframe_check" src="" ></iframe>'); $2("#iframe_check").attr("src", check_url); $2("#iframe_check").attr("scrolling", "no"); $2("#float_div").append('<div class="cover"><img src="https://s1.ax1x.com/2020/09/23/wjSB4K.png" alt="未命名1600825169" border="0"><br>验证后将自动刷新,若一直验证失败,<a style="color:red" target="_blank" href="' + check_url + '">点击此处</a>在独立页面中验证后关闭即可</div>'); $2("#float_div").css("display", "none"); //关闭按钮 $2("#float_div").append('<img class="cover-close" src="https://s1.ax1x.com/2020/10/26/BnYYXF.png" ></img>'); $2(".cover-close").click(function (event) { $2("#float_div").css("display", "none"); }); if ($2("#float_div").css("display") == "block") { $2("#float_div").css("display", "none"); } else { $2("#float_div").css("display", "block"); var w_check = setInterval(function () { obj.query_trend_data(); if (options.series[0].data.length > 0) { // console.log(options); $2("#float_div").css("display", "none"); chart = new ApexCharts(document.querySelector("#chart"), options); chart.render(); clearInterval(w_check); } }, 1000); } }); } } obj.close = function () { window.close(); } obj.cssPath = function (el) { if (!(el instanceof Element)) { return; } var path = []; while (el.nodeType === Node.ELEMENT_NODE) { var selector = el.nodeName.toLowerCase(); if (el.id) { selector += '#' + el.id; path.unshift(selector); break; } else if (document.getElementsByClassName(el.className).length == 1) { var str_class = $2.trim(el.className); str_class = str_class.replace(/\s+/g, ' '); selector += '.' + str_class.replace(/\ /g, '.'); path.unshift(selector); break; } else { var sib = el, nth = 1; while (sib = sib.previousElementSibling) { if (sib.nodeName.toLowerCase() == selector) { nth++; } } if (nth != 1) { selector += ":nth-of-type(" + nth + ")"; } } path.unshift(selector); el = el.parentNode; } return path.join(" > "); } obj.isParent = function (obj, parentObj) { while (obj != undefined && obj != null && obj.tagName != null && obj.tagName.toUpperCase() != 'BODY') { if (obj == parentObj) { return true; } obj = obj.parentNode; } return false; } obj.clearAllNodes = function () { document.getElementById('displayButton').innerHTML = ''; } //#region 初始化设置 obj.initialSetup = function () { } //#endregion 初始化设置 var startMonitoringFlag = '0' var settime_ms = 0 var criticalValue = 30000 //0.5分钟 var settime_ms_difference_last = criticalValue; obj.timing = function (operate) { setInterval(function () { var timestamp = $2('#time_span_ms').html(); var num_timestamp = Number(timestamp); var num_timestamp_now = num_timestamp + 50; var mydate_tmp = new Date(num_timestamp); // $2('#time_span').html(mydate_tmp.toLocaleString('chinese', { hour12: false, year: 'numeric', month: '2-digit', day: '2-digit', hour: '2-digit', minute: '2-digit', second: '2-digit' }) + ' ' + mydate_tmp.getMilliseconds()); $2('#time_span').html(mydate_tmp.Format("yyyy-MM-dd hh:mm:ss") + ' ' + mydate_tmp.getMilliseconds()); $2('#time_span_ms').html(num_timestamp_now); if (startMonitoringFlag == '1') { //开启监控后 var settime_ms_difference_current = settime_ms - num_timestamp_now; if (settime_ms_difference_current <= 0) { var planId = $2("#panicBuyingPlan").val(); var key_info = JSON.parse(JSON.stringify(obj_plans[planId]['keys'][location.host])); var second = Number($2('#duration').val()); if (isNaN(second)) { second = 60; } obj.setVirtualCookie(planId, '1', obj.get_date_now_ms(), second * 1000); obj.addClickTask(key_info); startMonitoringFlag = '0'; $2('#runStatus').val('方案已经执行,可在运行中的里面找到方案并停止'); } else if (settime_ms_difference_current < criticalValue) { $2('#runStatus').val('倒计时:' + ((settime_ms_difference_current) / 1000).toString() + '秒'); } else { $2('#runStatus').val('开始监控,将在 ' + criticalValue / 1000 + '秒后开始倒计时并自动同步时间'); } if (settime_ms_difference_current <= criticalValue && settime_ms_difference_last >= criticalValue) { obj.syntime(); } settime_ms_difference_last = settime_ms_difference_current; } else { // $2('#runStatus').val('等待抢购,请确保已经登陆并已经选好商品规格'); } }, 50); } obj.startMonitoring = function (planId, info) { if (info == "first_page") { } else { } } obj.stopMonitoring = function () { } //#region 跳转到新方案页 obj.bindingNotCompleted = function (info) { //todo 如果是新建 if (info == 'new') { obj.clearAllNodes(); var plan_id = 'plan_' + obj.get_date_now_ms(); $2("#planId").html(plan_id); $2("#isFinish").html('0'); } else { obj.clearAllNodes(); var plan_id = info; $2("#planId").html(plan_id); $2("#isFinish").html(obj_plans[plan_id]['isfinish']); $2("#planName").val(obj_plans[plan_id]['plan_name']); $2("#planInfo").val(obj_plans[plan_id]['plan_info']); var arry_plan_keys = []; for (var p in obj_plans[plan_id].keys) { arry_plan_keys.push(p); } for (let index = 0; index < arry_plan_keys.length; index++) { if (arry_plan_keys[index] != location.host) { var host_tmp = arry_plan_keys[index]; var new_div = document.createElement("div"); new_div.id = host_tmp; new_div.setAttribute('data-domainName', host_tmp); document.getElementById('displayButton').appendChild(new_div); var new_span = document.createElement("span"); new_span.className = 'dynamicHostSpan'; new_span.innerHTML = '[已保存] ' + '页面:' + host_tmp; document.getElementById(host_tmp).appendChild(new_span); for (let j = 0; j < obj_plans[plan_id]['keys'][host_tmp].length; j++) { var key_info = obj_plans[plan_id]['keys'][host_tmp][j]; var new_div = document.createElement("div"); new_div.className = 'dynamicDIV'; var new_span = document.createElement("span"); new_span.innerText = '▶' + key_info['key_name']; new_span.title = '▶' + key_info['key_name'] + "\n" + key_info['css_path']; new_span.className = 'dynamicSpan'; if (key_info['css_path'] == "refresh_page") { new_span.style.color = 'red'; } new_div.appendChild(new_span); new_span = document.createElement("span"); new_span.innerHTML = '    配置:'; if (key_info['css_path'] == "refresh_page") { new_span.innerHTML = '    配置:'; } new_span.title = '例:按钮总共点击3次,与上一个按钮间隔200毫秒,输入3-200'; new_span.style.color = 'green'; new_span.style.verticalAlign = 'middle'; new_div.appendChild(new_span); var new_input = document.createElement("input"); new_input.className = 'dynamicInput'; new_input.placeholder = '格式:次数-间隔(毫秒)'; new_input.value = (key_info['press_num'] + '-' + key_info['press_interval']); if (key_info['css_path'] == "refresh_page") { new_input.placeholder = '刷新按钮只能配置为1-xx'; new_input.id = host_tmp + "_refresh_page"; } new_div.appendChild(new_input); new_span = document.createElement("span"); new_span.innerHTML = key_info['css_path']; new_span.style.display = 'none'; new_div.appendChild(new_span); document.getElementById(host_tmp).appendChild(new_div); } } } if ($2.inArray(location.host, arry_plan_keys) >= 0) { var new_div = document.createElement("div"); new_div.id = location.host; new_div.setAttribute('data-domainName', location.host); document.getElementById('displayButton').appendChild(new_div); var new_span = document.createElement("span"); new_span.className = 'dynamicHostSpan'; new_span.innerHTML = '[已保存] ' + '页面:' + location.host; document.getElementById(location.host).appendChild(new_span); for (let j = 0; j < obj_plans[plan_id]['keys'][location.host].length; j++) { var key_info = obj_plans[plan_id]['keys'][location.host][j]; var new_div = document.createElement("div"); new_div.className = 'dynamicDIV'; var new_span = document.createElement("span"); new_span.innerText = '▶' + key_info['key_name']; new_span.title = '▶' + key_info['key_name'] + "\n" + key_info['css_path']; new_span.className = 'dynamicSpan'; if (key_info['css_path'] == "refresh_page") { new_span.style.color = 'red'; } new_div.appendChild(new_span); new_span = document.createElement("span"); new_span.innerHTML = '    配置:'; if (key_info['css_path'] == "refresh_page") { new_span.innerHTML = '    配置:'; } new_span.title = '例:按钮总共点击3次,与上一个按钮间隔200毫秒,输入3-200'; new_span.style.color = 'green'; new_span.style.verticalAlign = 'middle'; new_div.appendChild(new_span); var new_input = document.createElement("input"); new_input.className = 'dynamicInput'; new_input.placeholder = '格式:次数-间隔(毫秒)'; new_input.value = (key_info['press_num'] + '-' + key_info['press_interval']); if (key_info['css_path'] == "refresh_page") { new_input.placeholder = '刷新按钮只能配置为1-xx'; new_input.id = location.host + "_refresh_page"; } new_div.appendChild(new_input); new_span = document.createElement("span"); new_span.innerHTML = key_info['css_path']; new_span.style.display = 'none'; new_div.appendChild(new_span); document.getElementById(location.host).appendChild(new_div); } } } //todo 如果有传参则参数为planid } obj.switchToNew = function (source) { obj.select_tab('新方案', '', 1); if (source == 'edit_button') { obj.bindingNotCompleted($2("#panicBuyingPlan").val()); return; } var arry_plans_code = []; for (var p in obj_plans) { arry_plans_code.push(p); } for (let index = 0; index < arry_plans_code.length; index++) { if (obj_plans[arry_plans_code[index]]['isfinish'] == '0') { console.log('未完成'); if (source != null && source == 'new_button') { obj.swal_info(null, '您有尚未保存的方案,保存后才能新建'); } obj.bindingNotCompleted(arry_plans_code[index]); return; } } obj.bindingNotCompleted('new'); } //#endregion //#region obj.initializePanicBuyingAssistant 抢购助手初始化 var listen_click = '0'; obj.captureExecution = function (target) { if (listen_click == '0') { return; } if (obj.isParent(target, document.getElementById("coupon-wrap-qr"))) { return; } else if (obj.isParent(document.getElementById("coupon-wrap-qr"), target)) { return; } if (target.id == "button_capture" || target.id == "button_saveThisPage" || target.innerText == "完成") { return; } if (obj.isParent(target, document.getElementsByClassName('swal-overlay'))) { return; } var cssTargetStr = obj.cssPath(target); if (document.getElementById(location.host) == null) { var new_div = document.createElement("div"); new_div.id = location.host; new_div.setAttribute('data-domainName', location.host); document.getElementById('displayButton').appendChild(new_div); var new_span = document.createElement("span"); new_span.className = 'dynamicHostSpan'; new_span.innerHTML = '[未保存] ' + '页面:' + location.host; document.getElementById(location.host).appendChild(new_span); } else { document.getElementById(location.host).childNodes[0].innerHTML = '[未保存] ' + '页面:' + location.host; } if (document.getElementById(location.host).lastChild.firstChild.innerText == "▶刷新页面") { obj.swal_fadeAway("刷新操作后不能再添加按钮~", 1200); return; } var new_div = document.createElement("div"); new_div.className = 'dynamicDIV'; new_span = document.createElement("span"); if (target.innerText != null) { new_span.innerText = '▶' + target.innerText.replace('\n', ' '); new_span.title = '▶' + target.innerText + "\n" + cssTargetStr; } else { new_span.innerText = '▶找不到名称'; new_span.title = '▶找不到名称' + "\n" + cssTargetStr; } new_span.className = 'dynamicSpan'; new_div.appendChild(new_span); new_span = document.createElement("span"); new_span.innerHTML = '    配置:'; new_span.title = '例:按钮总共点击3次,与上一个按钮间隔200毫秒,输入3-200'; new_span.style.color = 'green'; new_span.style.verticalAlign = 'middle'; new_div.appendChild(new_span); var new_input = document.createElement("input"); new_input.className = 'dynamicInput'; new_input.placeholder = '格式:次数-间隔(毫秒)'; new_div.appendChild(new_input); new_span = document.createElement("span"); new_span.innerHTML = cssTargetStr; new_span.style.display = 'none'; new_div.appendChild(new_span); document.getElementById(location.host).appendChild(new_div); target.remove(); } obj.bindPlanInfo = function (planId) { var info_str = '方案编号:' + planId + '\n'; info_str += '方案名称:' + obj_plans[planId]['plan_name'] + '\n'; info_str += '方案说明:' + obj_plans[planId]['plan_info'] + '\n'; var arry_hosts = obj.getObjKeys(obj_plans[planId]['keys']); for (let i = 0; i < arry_hosts.length; i++) { info_str += '\n作用页面:' + arry_hosts[i] + '\n'; var keyInfo = obj_plans[planId]['keys'][arry_hosts[i]]; for (let j = 0; j < keyInfo.length; j++) { info_str += ' 点击--' + keyInfo[j].key_name + '\n'; } } $2('#imgPlanInfo').attr('title', info_str); } obj.setSelect = function (id, text) { var count = $2("#" + id).get(0).options.length; for (var i = 0; i < count; i++) { if ($2("#" + id).get(0).options[i].text == text) { $2("#" + id).get(0).options[i].selected = true; break; } } } var mouse_TO = ''; obj.initializePanicBuyingAssistant = function (type) { if (page_type == 'other_page') { document.getElementById('float_assistant').onmouseenter = function () { if (mouse_TO != '') { clearTimeout(mouse_TO); } obj.getNewVersion(); $2('#float_assistant')[0].children[0].style.display = 'inline-block'; $2('#float_assistant')[0].children[1].style.display = 'none'; $2('#float_assistant')[0].style.borderRadius = "6px"; $2('#float_assistant')[0].style.padding = "10px 10px 0px 10px "; } document.getElementById('float_assistant').onmouseleave = function () { mouse_TO = setTimeout(() => { $2('#float_assistant')[0].children[1].style.display = 'block'; $2('#float_assistant')[0].children[0].style.display = 'none'; $2('#float_assistant')[0].style.borderRadius = "99px"; $2('#float_assistant')[0].style.padding = "3px"; }, 500); } document.getElementById('float_assistant').onmousedown = function (e) { var e = e || window.event if (e.button == "1") { $2('#float_assistant').css('display', 'none'); } } } else { obj.getNewVersion(); } //时钟同步源选择 if (obj.platform() == "taobao") { obj.setSelect('syn_time_api', '源:淘宝服务器时间'); } else if (obj.platform() == "jingdong") { obj.setSelect('syn_time_api', '源:#东服务器时间'); } else if (obj.platform() == "suning") { obj.setSelect('syn_time_api', '源:苏宁服务器时间'); } else if (obj.platform() == "huawei") { obj.setSelect('syn_time_api', '源:华为商城服务器时间'); } else if (obj.platform() == "xiaomiyoupin") { obj.setSelect('syn_time_api', '源:小米有品服务器时间'); } else if (obj.platform() == "pinduoduo") { obj.setSelect('syn_time_api', '源:拼多多服务器时间'); } else { obj.setSelect('syn_time_api', '源:本页面服务器(精确到秒)'); } $2("#duration").val(60); //绑定方案 var arryPlanId = obj.getObjKeys(obj_plans); var select_plans = document.getElementById('panicBuyingPlan'); for (let i = 0; i < arryPlanId.length; i++) { if (obj_plans[arryPlanId[i]]['isfinish'] == '0') continue; var new_option = document.createElement('option'); new_option.value = arryPlanId[i]; new_option.innerText = obj_plans[arryPlanId[i]]['plan_name']; select_plans.appendChild(new_option); } //绑定任务inProgress var array_task = obj.getObjKeys(v_cookie); for (let i = 0; i < array_task.length; i++) { if (array_task[i] == 'mjdLogin') continue; if (obj_plans[array_task[i]] == null || obj_plans[array_task[i]] == undefined) { obj.delVirtualCookie(array_task[i]); continue; } if (array_task[i].indexOf('plan_') > -1 && v_cookie[array_task[i]]['active'] == '1' && obj.judgmentVirtualCookie(array_task[i])) { //绑定任务inProgress var inProgress_plans = document.getElementById('inProgress'); console.log(inProgress_plans); var new_option = document.createElement('option'); new_option.value = array_task[i]; new_option.innerText = obj_plans[array_task[i]]['plan_name']; inProgress_plans.appendChild(new_option); } } $2('#button_delTask').click(function () { obj.swal_info(null, "即将停止任务:" + $2("#inProgress").find("option:selected").text(), "确定", function () { obj.delVirtualCookie($2("#inProgress").val()); location.reload(); }) }); $2("#pageUrl").text(location.host); obj.select_tab('新方案', 'none', 0); var myDate = obj.get_date_now_ms(); $2('#time_span_ms').html(myDate); $2('#button_syn').click(function () { obj.syntime(); }); $2('#button_getCurrentTime').click(function () { var myDate = new Date(); // $2('#set_time').attr("value", myDate.toLocaleString('chinese', { hour12: false, year: 'numeric', month: '2-digit', day: '2-digit', hour: '2-digit', minute: '2-digit', second: '2-digit' })); $2('#set_time').attr("value", myDate.Format("yyyy-MM-dd hh:mm:ss")); }); $2('#panicBuyingPlan').change(function () { var planId = $2(this).val(); if (obj_plans[planId]['jd_spike'] == '1') { var active = '1'; if (!obj.judgmentVirtualCookie('mjdLogin')) { active = '0'; console.log('过期'); } if (active == '0') { obj.swal_info(null, '选择#东极速下单方案后,请点击"去登陆"确保已经登陆了web版#东~,本消息2小时内不再提醒', '去登陆', function () { $2('#mjdLogin')[0].click() }) } } obj.bindPlanInfo(planId); }); $2('#button_delPlan').click(function () { if (!obj.hasSelectPlan()) { return; } var select_val = $2("#panicBuyingPlan").val(); var plan_name = obj_plans[select_val]['plan_name']; obj.swal_info(null, '即将删除方案!方案名称:' + plan_name, "确认删除", function () { delete obj_plans[select_val] GM_setValue("obj_plans", JSON.stringify(obj_plans)); location.reload(); }); }); $2('#button_newPlan').click(function () { obj.switchToNew('new_button'); }); $2('#button_editPlan').click(function () { if (!obj.hasSelectPlan()) { return; } obj.switchToNew('edit_button'); }); $2('#viewTutorial').click(function () { GM_openInTab('https://bbs.youyizhineng.top/d/10', { active: true, setParent: true }); }); $2('.sys-description').css("display", 'none'); $2('#viewDescription').click(function () { if ($2('#viewDescription').text().indexOf("展开") > -1) { $2('.sys-description').css("display", 'block'); $2('#viewDescription').text(">>隐藏说明"); } else { $2('.sys-description').css("display", 'none'); $2('#viewDescription').text(">>展开说明"); } }); $2('#button_startNow').click(function () { //检查是否是#东快速通道并登陆 var select_val = $2("#panicBuyingPlan").val(); //设定的时间转毫秒 var set_time = $2('#set_time').val(); if (select_val == "---请选择---") { obj.swal_info(null, "您没有选择方案,请选择合适的方案哦~"); return; } var arry_plans = obj.getObjKeys(obj_plans[select_val]['keys']); if (arry_plans.length > 0 && $2.inArray(location.host, arry_plans) == -1) { obj.swal_info(null, "选中的方案不可作用于本页哦~"); return; } else if (obj_plans[select_val]['jd_spike'] == '1' && !obj.judgmentVirtualCookie('mjdLogin')) { obj.swal_info(null, '选择#东极速下单方案后,请点击"去登陆"确保已经登陆了web版#东~,本消息2小时内不再提醒', '去登陆', function () { $2('#mjdLogin')[0].click() }) return; } else { settime_ms = 0; startMonitoringFlag = '1'; $2('#runStatus').val('方案已经执行,可在运行中的里面找到方案并停止'); } }); $2('#button_startMonitoring').click(function () { //添加任务到v_cookie if (startMonitoringFlag == '1') { startMonitoringFlag = '0'; $2('#button_startMonitoring').text('开始执行'); $2('#button_startMonitoring').css('background-color', '#25a765'); $2('#button_startMonitoring').css('color', '#ffffff'); $2("#panicBuyingPlan").attr("disabled", false); $2("#set_time").attr("disabled", false); $2("#syn_time_api").attr("disabled", false); $2("#set_time_ms").attr("disabled", false); $2("#earlyOrLate").attr("disabled", false); $2('#runStatus').val('等待抢购,请确保已经登陆并已经选好商品规格'); } else { //检查是否是#东快速通道并登陆 var select_val = $2("#panicBuyingPlan").val(); //设定的时间转毫秒 var set_time = $2('#set_time').val(); if (select_val == "---请选择---") { obj.swal_info(null, "您没有选择方案,请选择合适的方案哦~"); return; } var arry_plans = obj.getObjKeys(obj_plans[select_val]['keys']); if (arry_plans.length > 0 && $2.inArray(location.host, arry_plans) == -1) { obj.swal_info(null, "选中的方案不可作用于本页哦~"); return; } else if (obj_plans[select_val]['jd_spike'] == '1' && !obj.judgmentVirtualCookie('mjdLogin')) { obj.swal_info(null, '选择#东极速下单方案后,请点击"去登陆"确保已经登陆了web版#东~,本消息2小时内不再提醒', '去登陆', function () { $2('#mjdLogin')[0].click() }) return; } else if (set_time == '') { obj.swal_info(null, "设定时间不能为空"); return; } else { var d = new Date(set_time); var d_ms = Number(d); if (isNaN(Number(d))) { obj.swal_info(null, "请输入正确的时间格式"); } else { startMonitoringFlag = '1'; $2('#button_startMonitoring').text('监控中..'); $2('#button_startMonitoring').css('background-color', '#ffcc00'); $2('#button_startMonitoring').css('color', '#000000'); $2("#panicBuyingPlan").attr("disabled", true); $2("#set_time").attr("disabled", true); $2("#syn_time_api").attr("disabled", true); $2("#set_time_ms").attr("disabled", true); $2("#earlyOrLate").attr("disabled", true); if ($2('#earlyOrLate').val() == 'inAdvance') { settime_ms = d_ms - Number($2('#set_time_ms').val()); } else { settime_ms = d_ms + Number($2('#set_time_ms').val()); } } } } }); $2('#button_saveThisPage').click(function () { // console.log($2("#planName").text()); var error = 0; if ($2("#planName").val() == '') { // obj.swal_info(null, "方案名称不可为空!"); obj.swal_fadeAway("方案名称不可为空!", 1200); return; } if ($2("#planName").val() == '') { // obj.swal_info(null, "方案名称不可为空!"); obj.swal_fadeAway("方案名称不可为空!", 1200); return; } if ($2("#planInfo").val() == '') { // obj.swal_info(null, "方案描述不可为空!"); obj.swal_fadeAway("方案描述不可为空!", 1200); return; } if ($2("#displayButton").find('div').length == 0) { // obj.swal_info(null, "没有捕获任何按键!"); obj.swal_fadeAway("没有捕获任何按键!", 1200); return; } else { GM_setValue('newPlanFinish', '0'); //todo 保存本页配置项 var plan_id = $2("#planId").text(); obj_plans[plan_id] = {}; obj_plans[plan_id]['plan_name'] = $2("#planName").val(); obj_plans[plan_id]['plan_info'] = $2("#planInfo").val(); obj_plans[plan_id]['plan_type'] = '1'; obj_plans[plan_id]['jd_spike'] = '0'; obj_plans[plan_id]['plan_attributes1'] = ''; obj_plans[plan_id]['plan_attributes2'] = ''; obj_plans[plan_id]['plan_attributes3'] = ''; obj_plans[plan_id]['isfinish'] = '0'; obj_plans[plan_id]['keys'] = {}; for (var i = 0; i < $2(".dynamicHostSpan").length; i++) { var host = $2(".dynamicHostSpan")[i].textContent.split(':')[1]; obj_plans[plan_id]['keys'][host] = []; for (var j = 1; j < $2('[data-domainname="' + host + '"]')[0].childNodes.length; j++) { var childnodes = $2('[data-domainname="' + host + '"]')[0].childNodes[j]; var key_info = {}; var input_val = childnodes.childNodes[2].value; if (!(input_val.indexOf('-') > 0) || input_val.split('-').length < 2 || !obj.isNumber(input_val.split('-')[0]) || !obj.isNumber(input_val.split('-')[1]) ) { error = error + 1; input_val = '1-200'; } key_info['key_name'] = childnodes.childNodes[0].textContent.split('▶')[1]; key_info['press_num'] = input_val.split('-')[0]; key_info['press_interval'] = input_val.split('-')[1]; key_info['css_path'] = childnodes.childNodes[3].textContent; if (childnodes.childNodes[3].textContent == "refresh_page") { key_info['press_num'] = '1'; } if (input_val.split('-')[0] != '0') { obj_plans[plan_id]['keys'][host].push(key_info); } } if (obj_plans[plan_id]['keys'][host].length == 0) { delete obj_plans[plan_id]['keys'][host]; } GM_setValue("obj_plans", JSON.stringify(obj_plans)); } } if (error > 0) { listen_click = '0'; obj.swal_info(null, "发现有错误的配置项,已将错误的配置项自动调整为1-200!", null, function () { location.reload(); }) } else { location.reload(); } }); $2('#planCompleted').click(function () { for (let i = 0; i < $2('.dynamicHostSpan').length; i++) { if ($2('.dynamicHostSpan')[i].innerText.indexOf('未保存') > 0) { obj.swal_fadeAway("请先保存本页!", 1200); return; } } GM_setValue('newPlanFinish', '1'); obj_plans[$2("#planId").text()]['isfinish'] = '1'; GM_setValue("obj_plans", JSON.stringify(obj_plans)); location.reload(); }); $2('#temporaryBlock').click(function () { obj.swal_info(null, "鼠标放在悬浮球上点击中键也可临时屏蔽悬浮球", "我知道了", function () { $2('#float_assistant').css('display', 'none'); }) }); $2('#save_temporaryBlock').click(function () { var textarea_text = $2('#textarea_xzs').val(); GM_setValue('blockUrl', textarea_text); //保存白名单 var textarea_text = $2('#textarea_wlist').val(); var arry_wlist = textarea_text.split("\n"); var str_wlist = obj.uniqueArr(arry_wlist).join("\n"); GM_setValue('passUrl', str_wlist); for (let i = 0; i < $2('.radio_ss').length; i++) { if ($2('.radio_ss')[i].checked) { GM_setValue('BWlist_sel', $2('.radio_ss')[i].value); break; } } obj.swal_info(null, "保存成功!", "确定", function () { location.reload(); }); }); $2('#permanentlyBlock').click(function () { var textarea_text = $2('#textarea_xzs').val(); var textarea_hosts = textarea_text.split("\n"); if (textarea_hosts.length > 0 && $2.inArray(location.host, textarea_hosts) > -1) { obj.swal_info(null, "本域名已在屏蔽列表!"); } else { textarea_hosts.push(location.host); var textarea_hosts = textarea_hosts.filter(function (s) { return s && s.trim(); // 注:IE9(不包含IE9)以下的版本没有trim()方法 }); var val_new_url = textarea_hosts.join("\n"); $2('#textarea_xzs').val(val_new_url); GM_setValue('blockUrl', val_new_url); obj.swal_info(null, "添加成功!", null, function () { $2('#float_assistant').css('display', 'none'); }); } }); $2('#passThisPage').click(function () { $2('#textarea_wlist').val(location.host + "\n" + $2('#textarea_wlist').val()); }); $2('#button_add_refresh').click(function () { listen_click = '0'; obj.swal_info(null, "小提示:\n1.添加刷新页面按钮后,将无法继续捕获按钮\n2.刷新页面按钮前必须有已经捕获的按钮\n3.刷新页面按钮只能添加一个\n4.刷新操作将在所有按钮点击完毕后执行", "确定添加", function () { if (document.getElementById(location.host) == null) { obj.swal_fadeAway("添加刷新之前必须要有已捕捉的按钮!", 1200); } else if (document.getElementById(location.host + "_refresh_page")) { obj.swal_fadeAway("刷新页面操作只能添加一个!", 1200); } else { var new_div = document.createElement("div"); new_div.className = 'dynamicDIV'; var new_span = document.createElement("span"); new_span.innerText = '▶刷新页面'; new_span.style.color = 'red'; new_span.title = '▶刷新页面'; new_span.className = 'dynamicSpan'; new_div.appendChild(new_span); new_span = document.createElement("span"); new_span.innerHTML = '    配置:'; new_span.title = '例:按钮总共点击3次,与上一个按钮间隔200毫秒,输入3-200'; new_span.style.color = 'green'; new_span.style.verticalAlign = 'middle'; new_div.appendChild(new_span); var new_input = document.createElement("input"); new_input.className = 'dynamicInput'; new_input.placeholder = '刷新按钮只能配置为1-xx'; // new_input.style.display = 'none'; new_input.value = '1-200'; new_div.appendChild(new_input); new_input.id = location.host + "_refresh_page"; new_span = document.createElement("span"); new_span.innerHTML = 'refresh_page'; new_span.style.display = 'none'; new_div.appendChild(new_span); document.getElementById(location.host).appendChild(new_div); } }) }); $2('#button_capture').click(function () { if ($2("#button_capture").text() == '按钮捕获') { $2("#button_capture").text('结束捕获'); $2("#button_capture").css('backgroundColor', '#ffcc00'); $2("#button_capture").css('color', '#000000'); listen_click = '1'; } else { $2("#button_capture").text('按钮捕获'); $2("#button_capture").css('backgroundColor', '#1e90ff'); $2("#button_capture").css('color', '#ffffff'); listen_click = '0'; } var allDom = document.querySelectorAll('*'); NodeList.prototype.forEach = Array.prototype.forEach; allDom.forEach((item) => { if (item.nodeName.toUpperCase() == 'SCRIPT') { item.remove() } if (item.nodeName.toUpperCase() == 'A') { item.href = "#"; } if (item.nodeName.toUpperCase() == 'BODY' || item.nodeName.toUpperCase() == 'HTML') { // item.style.backgroundColor = "rgba(78,110,242,0)" } else if (obj.isParent(item, document.getElementById("coupon-wrap-qr"))) { } else { if (!obj.isParent(document.getElementById("coupon-wrap-qr"), item)) { item.onfocus = function (evt) { let event = evt || window.event; let target = event.target || event.srcElement; obj.captureExecution(target); event.stopImmediatePropagation(); event.preventDefault(); } item.onclick = function (evt) { let event = evt || window.event; let target = event.target || event.srcElement; obj.captureExecution(target); event.stopImmediatePropagation(); event.preventDefault(); } item.style.cursor = 'pointer' var color = item.style.backgroundColor; item.onmouseenter = function () { item.style.backgroundColor = "rgba(78,110,242,0.15)"; } item.onmouseleave = function () { item.style.backgroundColor = color; } } else { console.log(item); } } }) }); $2('#button_exportPlan').click(function () { var obj_plan_tmp = {}; if (!obj.hasSelectPlan()) { return; } var select_val = $2("#panicBuyingPlan").val(); obj_plan_tmp[select_val] = obj_plans[select_val]; var plan_str = JSON.stringify(obj_plan_tmp); obj.swal_info("方案序列化结果", plan_str, '复制', function () { GM_setClipboard(plan_str, 'text'); obj.swal_fadeAway('复制成功', 1200); }) }); $2('#button_importPlan').click(function () { swal("请粘贴序列化后的方案", { content: "input", }) .then((value) => { obj.importPlan('plugin', value); }); }); $2('#shareToBbs').click(function () { if (!obj.hasSelectPlan()) { return; } else { var obj_plan_tmp = {}; var select_val = $2("#panicBuyingPlan").val(); obj_plan_tmp[select_val] = obj_plans[select_val]; var plan_str = JSON.stringify(obj_plan_tmp); GM_setClipboard(plan_str, 'text'); obj.swal_fadeAway("复制成功!正在打开论坛", 1200); GM_openInTab('https://bbs.youyizhineng.top/d/15', { active: true, setParent: true }); } }); $2('#importFromBbs').click(function () { GM_openInTab('https://bbs.youyizhineng.top/t/share', { active: true, setParent: true }); }); var newPlanFinish = GM_getValue('newPlanFinish'); if (newPlanFinish == '0') { obj.switchToNew(''); } obj.timing(); //绑定屏蔽网址 $2('#textarea_xzs').val(blockUrl); //绑定白名单 $2("#textarea_wlist").val(passUrl); // obj.getNewVersion(); } //#endregion 抢购助手初始化 //#region obj.syntime 同步功能 obj.syntime = function () { $2('#time_syncR###lt').html('同步中...'); var syn_time_api_select = $2("#syn_time_api").val(); if (syn_time_api_select == 'local') { $2('#time_span_ms').html(obj.get_date_now_ms()); $2('#time_syncR###lt').html('同步本地时间成功'); } else { if ($2("#syn_time_api").val().indexOf('youyizhineng.top') > 0) { var url_salt = syn_time_api_select + "&salt=" + Math.random(); } else { var url_salt = syn_time_api_select; } // console.log(url_salt); var now1 = Number(obj.get_date_now_ms()); var now2 = Number(obj.get_date_now_ms()); GM_xmlhttpRequest({ url: url_salt, method: 'GET', timeout: 10000, headers: { 'Content-Type': 'application/json', 'Accept': 'application/json', 'Cache-Control': 'public' }, onload: function (xhr) { if (xhr.readyState == 4 && xhr.status == 200) { now2 = Number(obj.get_date_now_ms()); var res = xhr.responseText;//获取到json字符串,解析sysTime1 if ($2("#syn_time_api").val().indexOf('youyizhineng.top') > 0) { var data = JSON.parse(res); console.log(data); $2('#time_span_ms').html(Number(data.serverTime) + parseInt((now2 - now1) / 2)); $2('#time_syncR###lt').html('同步#东服务器时间成功!'); } else if ($2("#syn_time_api").val().indexOf('taobao.com') > 0) { var data = JSON.parse(res); console.log(data); $2('#time_span_ms').html(Number(data.data.t) + parseInt((now2 - now1) / 2)); $2('#time_syncR###lt').html('同步淘宝服务器时间成功!'); } else if ($2("#syn_time_api").val().indexOf('suning.com') > 0) { var data = JSON.parse(res); var sn_time = new Date(data.sysTime2); $2('#time_span_ms').html(Number(sn_time) + parseInt((now2 - now1) / 2)); $2('#time_syncR###lt').html('同步苏宁服务器时间成功!'); } else if ($2("#syn_time_api").val().indexOf('pinduoduo.com') > 0) { var data = JSON.parse(res); console.log(data); $2('#time_span_ms').html(Number(data.server_time) + parseInt((now2 - now1) / 2)); $2('#time_syncR###lt').html('同步拼多多服务器时间成功!'); } else if ($2("#syn_time_api").val().indexOf('vmall.com') > 0) { var data = JSON.parse(res); console.log(data); $2('#time_span_ms').html(Number(data.currentTime) + parseInt((now2 - now1) / 2)); $2('#time_syncR###lt').html('同步华为商城服务器时间成功!'); } else if ($2("#syn_time_api").val().indexOf('mi.com') > 0) { console.log(res); var xmTimestamp = res.split('=')[1]; $2('#time_span_ms').html(Number(xmTimestamp) * 1000 + parseInt((now2 - now1) / 2)); $2('#time_syncR###lt').html('同步小米有品服务器时间成功!'); } else { var responseHeaders = xhr.responseHeaders.split("\n"); try { for (let i = 0; i < responseHeaders.length; i++) { if (responseHeaders[i].split("date:").length > 1) { // console.log(responseHeaders[i].split("date:")[1]); var sn_time = new Date(responseHeaders[i].split("date:")[1]); $2('#time_span_ms').html(Number(sn_time) + parseInt((now2 - now1) / 2)); $2('#time_syncR###lt').html('同步当前页面服务器时间成功!'); break; } } } catch (e) { $2('#time_span_ms').html(obj.get_date_now_ms()); $2('#time_syncR###lt').html('同步发生错误,已切换同步本地时间'); } } } else { $2('#time_span_ms').html(obj.get_date_now_ms()); $2('#time_syncR###lt').html('同步发生错误,已切换同步本地时间'); } } }); } } //#endregion obj.getAssistantHtml = function (type) { var html = ''; if (type != 'detailPage') { html = html + '<div id="float_assistant">' + '<div id="coupon-wrap-qr" class="coupon-wrap-qr" style="display:inline-block;">' + ' <div class="tabsholder2" style="display:inline-block;">'; } html = html + '<div data-tab="抢购助手">' + ' <div class="div-helper-box" style="margin-bottom:10px;" >' + ' <span id="pluginUpdate" style="cursor:pointer;color:#1e90ff;display:none;">插件有更新,点击更新</span>' + ' </div>' + ' <div class="div-helper-box" style="margin:0px;">' + ' <span>查看教程:</span>' + ' <span id="viewTutorial" style="cursor:pointer;color:#1e90ff;">点击查看教程</span>' + ' <span id="viewDescription" style="cursor:pointer;color:#3b9d3b;margin-left:20px;font-weight:700">>>展开说明</span>' + // ' <a href="#" id="viewTutorial" style="border:0px;box-shadow:;-webkit-box-shadow:;">点击查看教程</a>' + ' </div>' + ' <div class="div-helper-box">' + ' <span>执行中的:</span>' + ' <select id="inProgress" style="width:165px;">' + ' <option disabled selected>---请选择---</option>' + ' </select>' + ' <button id="button_delTask" style="background-color: #1E90FF;">停止任务</button>' + ' </div>' + ' <div class="div-helper-box sys-description" style="margin:0px;">' + ' <span style="color:#3b9d3b">▲当前执行中的任务,若任务执行影响正常浏览,可以停止对应的任务</span>' + ' </div>' + ' <div class="div-helper-box">' + ' <span>当前时间:</span>' + ' <span id="time_span" style="display:inline-block;width: 160px;"></span>' + ' <span id="time_span_ms" style="display:none;"></span>' + ' <span id="time_syncR###lt" style="color: green;">未同步</span>' + ' </div>' + ' <div class="div-helper-box sys-description" style="margin:0px;">' + ' <span style="color:#3b9d3b">▲当前时间,同步之后才会准确,最好在快开始抢购时候同步一次</span>' + ' </div>' + ' <div class="div-helper-box">' + ' <span>同步时间:</span>' + ' <select id="syn_time_api" style="width:165px;">' + ' <option value="local">源:本地时间</option>' + ' <option value="https://api.m.taobao.com/rest/api3.do?api=mtop.common.getTimestamp">源:淘宝服务器时间</option>' + ' <option value="https://www.youyizhineng.top//query_coupon/query_coupon_v210120.php?operate=syn_time&type=jd">源:#东服务器时间</option>' + ' <option value="https://quan.suning.com/getSysTime.do">源:苏宁服务器时间</option>' + ' <option value="https://api.pinduoduo.com/api/server/_stm">源:拼多多服务器时间</option>' + ' <option value="https://mbuy.vmall.com/getSkuRushbuyInfo.json">源:华为商城服务器时间</option>' + ' <option value="https://tptm.hd.mi.com/gettimestamp">源:小米有品服务器时间</option>' + ' <option value="' + location.href + '">源:本页面服务器(精确到秒)</option>' + ' </select>' + ' <button id="button_syn" style="background-color: #1E90FF;">同步时间</button>' + ' </div>' + ' <div class="div-helper-box sys-description" style="margin:0px;">' + ' <span style="color:#3b9d3b">▲选择同步时间源,那个##就选哪个源,点击同步时间可以同步一次</span>' + ' </div>' + ' <div class="div-helper-box">' + ' <span>抢购时间:</span>' + ' <input class="butyInput" type="text" id="set_time" style="width:158px;" placeholder="格式:2020-11-11 11:59:59">' + ' <button id="button_getCurrentTime" style="background-color: #1E90FF;">获取当前</button>' + ' <select id="earlyOrLate">' + ' <option value="inAdvance">提前</option>' + ' <option value="postpone">延后</option>' + ' </select>' + ' <!-- <span>    提前</span> -->' + ' <input class="butyInput" type="text" id="set_time_ms" style="width: 30px;">' + ' <span>毫秒</span>' + ' </div>' + ' <div class="div-helper-box sys-description" style="margin:0px;">' + ' <span style="color:#3b9d3b">▲设置抢购时间,可以设置提前或者延后,提前和延后的值根据自己的经验设置,不设置则为0</span>' + ' </div>' + ' <div class="div-helper-box">' + ' <span>抢购方案:</span>' + ' <select style="width:165px;" id="panicBuyingPlan">' + ' <option disabled selected>---请选择---</option>' + ' </select>' + ' <img id="imgPlanInfo" src="https://s3.ax1x.com/2020/11/30/Dgx1vq.png">' + ' <button id="button_newPlan">新建方案</button>' + ' <button id="button_editPlan">编辑方案</button>' + ' </div>' + ' <div class="div-helper-box">' + ' <span style="visibility:hidden">我来占位:</span>' + ' <button id="button_delPlan" style="background-color:red">删除方案</button>' + ' <button id="button_exportPlan">导出方案</button>' + ' <button id="button_importPlan">导入方案</button>' + ' <button id="shareToBbs" style="background-color:#ea7460;width=90px">分享到论坛</button>' + ' <button id="importFromBbs" style="background-color:#ea7460;width=90px">从论坛导入</button>' + ' </div>' + ' <div class="div-helper-box sys-description" style="margin:0px;">' + ' <span style="color:#3b9d3b">▲抢购方案选择、新建、编辑、导入、导出</span>' + ' </div>' + ' <div class="div-helper-box">' + ' <span>持续时间:</span>' + ' <input class="butyInput" type="text" id="duration" style="width:30px;">' + ' <span>秒(默认60秒) </span> <span style="color:green">说明:从抢购时刻开始的持续抢购时间</span>' + ' </div>' + ' <div class="div-helper-box sys-description" style="margin:0px;">' + ' <span style="color:#3b9d3b">▲从抢购时刻开始的持续抢购时间,若设置的时间过长,抢购任务会一直抢购,可在“进行中的”停止任务。</span>' + ' </div>' + ' <div class="div-helper-box">' + ' <span>运行状态:</span>' + ' <input class="butyInput" type="text" id="runStatus" style="width: 300px;background-color: #f8f8f8;" readonly="readonly">' + ' </div>' + ' <div class="div-helper-box">' + ' <button id="button_startMonitoring" class="notRun">开始监控</button>' + ' <button id="button_startNow" class="notRun">立即执行</button>' + ' </div>' + ' <div class="div-helper-box sys-description" style="margin:0px;">' + ' <span style="color:#3b9d3b">▲开始监控:到设置的时间点后执行。立即执行:在现在时刻直接执行方案</span>' + ' </div>' + '</div>' + '<div data-tab="新方案">' + ' <div class="div-helper-box" style = "display:none;">' + ' <span id="planId"></span>' + ' <span id="isFinish"></span>' + ' </div>' + ' <div class="div-helper-box">' + ' <span>方案名称:</span>' + ' <input id="planName" class="butyInput" type="text" style="width: 150px;">' + ' </div>' + ' <div class="div-helper-box">' + ' <span>方案描述:</span>' + ' <input id="planInfo" class="butyInput" type="text" style="width: 250px;">' + ' </div>' + ' <div class="div-helper-box">' + ' <div>' + ' <span style="display:block;text-align:center;background-color:#f3f1f1;">▼已捕获按钮流▼</span>' + ' </div>' + ' </div>' + ' <div class="div-helper-box">' + ' <div id="displayButton">' + ' </div>' + ' </div>' + ' <div class="div-helper-box">' + ' <button id="button_capture" style="background-color: #1E90FF;">按钮捕获</button>' + ' <button id="button_saveThisPage" style="background-color: #1E90FF;">保存本页</button>' + ' <span style="display:inline-block;width:30px"></span>' + ' <button id="button_add_mjd">+#东快速通道</button>' + ' <button id="button_add_refresh">+刷新页面</button>' + ' </div>' + ' <div class="div-helper-box">' + ' <button id="planCompleted">保存方案</button>' + ' </div>' + '</div>'; if (type != 'detailPage') { html = html + '<div data-tab="设置">' + ' <div class="div-helper-box">' + ' <input class="radio_ss" type="radio" name="urlMode" value="black_mode">黑名单模式 ' + ' <input class="radio_ss" type="radio" name="urlMode" value="white_mode">白名单模式' + ' </div>' + ' <div class="div-helper-box">' + ' <span style="display: block;">屏蔽网址(黑名单):网址与网址之间需要换行</span>' + ' <textarea id="textarea_xzs" rows="10" cols="80" style="border: 1px solid;"></textarea>' + ' </div>' + ' <div class="div-helper-box">' + ' <span style="display: block;">放行网址(白名单):网址与网址之间需要换行,方案中的网址自动加入白名单</span>' + ' <textarea id="textarea_wlist" rows="10" cols="80" style="border: 1px solid;"></textarea>' + ' </div>' + ' <div class="div-helper-box" style="text-align:right">' + ' <button id="save_temporaryBlock">保存</button>' + ' </div>' + ' <div class="div-helper-box">' + ' <span style="display: block;color:green">临时屏蔽仅本次生效</span>' + ' <span style="display: block;color:green">永久屏蔽后可在上面删除对应的网站解除屏蔽</span>' + ' <span >本页操作:</span>' + ' <button id="temporaryBlock">临时屏蔽</button>' + ' <button id="permanentlyBlock" style="background-color:red">永久屏蔽</button>' + ' <button id="passThisPage" style="background-color:green;width:110px">添加本页到白名单</button>' + ' </div>' + '</div>' + ' </div>' + ' </div>' + ' </div>' + '</div>'; } return html; } obj.generateCouponArea = function () { var productId = ''; var operate = ''; var singleOrlist = ''; var site_type_chinese = "淘宝"; if (obj.site_type() == "taobao_details_page") { operate = 'quert_single'; singleOrlist = 'itemid'; obj.get_data(); if (stop == '1') { return; } var params = location.search.split("?")[1].split("&"); for (var index in params) { if (params[index].split("=")[0] == "id") { productId = params[index].split("=")[1]; break; } } site_type_chinese = "淘宝"; } else if (obj.site_type() == "jingdong_details_page") { operate = 'quert_single_jd'; singleOrlist = 'itemid'; //get data obj.get_data(); if (stop == '1') { return; } productId = location.href.split("//")[1].split("/")[1].split(".")[0]; site_type_chinese = "#东"; } else if (obj.site_type() == "vip_detail_page" || obj.site_type() == "vip_detail_page_m") { operate = 'quert_list_vip'; singleOrlist = 'itemid_list'; //get data obj.get_data(); if (stop == '1') { return; } productId = location.href.split("-")[location.href.split("-").length - 1].split(".")[0]; site_type_chinese = "唯品会"; } else if (obj.site_type() == "kaola_detail_page") { operate = 'kaola_single'; singleOrlist = 'itemid_list'; // //get data // obj.get_data(); // if (stop == '1') { return; } productId = location.href.split("/product/")[1].split(".")[0]; site_type_chinese = "考拉海购"; } else if (obj.site_type() == "suning_detail_page") { operate = 'suning_single'; singleOrlist = 'itemid'; // //get data // obj.get_data(); // if (stop == '1') { return; } // var mertCode = location.href.split("product.suning.com/")[1].split(".html")[0].split("/")[0]; var commCode = location.href.split("product.suning.com/")[1].split(".html")[0].split("/")[1]; productId = commCode; site_type_chinese = "苏宁易购"; } var url = "https://www.youyizhineng.top/query_coupon/query_coupon_v210120.php?operate=" + operate + "&" + singleOrlist + "=" + productId; console.log(url); var xhr = new XMLHttpRequest();//第一步:新建对象 xhr.open('GET', url, true);//第二步:打开连接 将请求参数写在url中 xhr.send();//第三步:发送请求 将请求参数写在URL中 /** * 获取数据后的处理程序 */ xhr.onreadystatechange = function () { if (xhr.readyState == 4 && xhr.status == 200) { var res = xhr.responseText;//获取到json字符串,解析 var data; if (obj.site_type() == "taobao_details_page") { data = JSON.parse(res); } else if (obj.site_type() == "jingdong_details_page" || obj.site_type() == "vip_detail_page" || obj.site_type() == "vip_detail_page_m" || obj.site_type() == "kaola_detail_page" || obj.site_type() == "suning_detail_page") { var data_tmp = JSON.parse(res); data = data_tmp[productId]; } var couponArea; if (data.couponmoney == 0) { couponArea = //#region 无优惠券显示 '<div class="coupon-wrap">' + ' <div class="stamp stamp04">' + ' <div class="par" >' + ' <sub class="sign" style="vertical-align: baseline;display:none;">返</sub>' + ' <span id="faceValue" style="font-size:18px;line-height:50px">暂无隐藏优惠券</span><p></p>' + ' <p id="faceValueExplain" style="font-size:8px"></p>' + ' </div>' + ' <div id="copy_div" class="copy" style="display:none;">返现' + ' <p>无优惠券<br>有返现</p>' + ' <a id="a_scanCodeCashback">' + "扫码返现" + '</a>' + ' </div>' + ' <i></i>' + ' </div>' + '</div>'; //#endregion 优惠券显示 } else { var howToGetCoupons = '直接#券'; couponArea = //#region 有优惠券显示 '<div class="coupon-wrap">' + ' <div class="stamp stamp04">' + ' <div class="par">' + ' <sub class="sign" style="vertical-align: baseline;">¥</sub>' + ' <span style="font-size:20px;">' + data.couponmoney + '</span>' + ' <p>' + data.couponexplain + '</p>' + ' </div>' + ' <div class="copy">优惠券' + ' <p>' + data.couponstarttime + "<br>" + data.couponendtime + '</p>' + ' <a href="' + data.url1 + '">' + howToGetCoupons + '</a>' + ' </div>' + ' <i></i>' + ' </div>' + '</div>'; //#endregion 有优惠券显示 } //#region 返现文字 if (data.return_money_rate == 0) { var span_text = '暂无返现'; var other_text = '其他功能'; var html_qr_code = '<img class="qr-img" src="https://s1.ax1x.com/2020/10/26/BnY7jS.png"></img>' + '<span class="title">「花前省一省」是一款#券返现的APP,支持淘宝、天猫、#东、拼多多、唯品会等等主流##~还有点外卖#券返现,电影票优惠购,全网vip视频免费看等功能,让您花钱之前,再省一省</span>' + '<span class="foot" style="height:20px;">扫码下载,支持IOS和安卓,也可在各大应用市场下载</span>'; } else { var span_text = '返现查询中...'; var other_text = '点击#取返现'; var html_qr_code = '<div id="qrcode"></div>' + '<span class="title">获得返现只需三步~</br></br>①应用商店下载APP:花前省一省</br>②使用APP主页扫一扫功能扫左侧生成的商品码</br>③选择自购省,从花前省一省APP跳转到' + site_type_chinese + 'APP下单,确认收货后返现将进入花前省一省APP账户余额~</br><br></span>' + '<span class="foot" style="height:20px">支持IOS和安卓,各大应用市场均有下载</br></span>' + '<span class="foot" style="height:20px;color:green;font-weight:700;display: block; text-align: right;">花前省一省--花钱之前,再省一省</span>'; } //#endregion 返现文字 couponArea = couponArea + '<div class="coupon-wrap-rm">' + ' <div class="rm-div" style="width:600px;text-align:center">' + ' <span id="rm_money">' + span_text + '</span>' + ' <div class="rm-btn" id="a_click">' + other_text + '</div>' + ' </div>' + '</div>' + '<div id="coupon-wrap-qr" class="coupon-wrap-qr">' + ' <div class="tabsholder2">'; //#region 返现码 couponArea = couponArea + ' <div data-tab="返现码">' + ' <div class="qr-code-div">' + html_qr_code + ' </div>' + ' </div>'; //#endregion //#region 价格走势 couponArea = couponArea + ' <div data-tab="价格走势">' + ' <div class="coupon-wrap-rm">' + ' <div class="rm-div">' + ' <div class="trend-btn" id="trend_click">历史价格走势<img class="trend-btn-img" src="https://s1.ax1x.com/2020/10/26/BnY0t1.png" alt=""></div>' + ' <img class="image-status" >' + ' <em class="status-span"></em>' + ' </div>' + ' </div>' + ' <div class="trend-div">' + ' <div id="chart"></div>' + ' </div>' + ' </div>'; //#endregion //#region 抢购助手 couponArea = couponArea + obj.getAssistantHtml('detailPage'); //#endregion //#region 动态 if (data.tab_html != null && data.tab_html != '') { couponArea = couponArea + data.tab_html; } //#设置页 couponArea = couponArea + '<div data-tab="设置">' + ' <div class="div-helper-box">' + ' <label for="" style="width: 300px;display: block;">请选择默认展示内容</label>' + ' </div>' + ' <div class="div-helper-box">' + ' <input class="radio_s" type="radio" name="sex" value="hide">全部隐藏' + ' <input class="radio_s" type="radio" name="sex" value="qrcode">返现码' + ' <input class="radio_s" type="radio" name="sex" value="trend">价格走势' + ' <input class="radio_s" type="radio" name="sex" value="assistant">抢购助手' + ' </div>' + ' <div class="div-helper-box">' + ' <label for="" style="width: 300px;display: block;">请选择悬浮球屏蔽模式</label>' + ' </div>' + ' <div class="div-helper-box">' + ' <input class="radio_ss" type="radio" name="shieldMode" value="black_mode">黑名单模式' + ' <input class="radio_ss" type="radio" name="shieldMode" value="white_mode">白名单模式' + ' </div>' + ' <div class="div-helper-box">' + ' <button id="button_saveSetting">保存</button>' + ' </div>' + '</div>'; //#endregion couponArea = couponArea + ' </div>' + '</div>'; var ls = setInterval(function () { if ($2(".coupon-wrap").length == 0) { if (obj.site_type() == "taobao_details_page") { if ($2(".tm-fcs-panel").length > 0) { $2(".tm-fcs-panel").after(couponArea); } else if ($2("ul.tb-meta").length > 0) { $2("ul.tb-meta").after(couponArea); } var qr_code_text = obj.DetailPageTB_or_TM_or_JD() + '//' + productId; } else if (obj.site_type() == "jingdong_details_page") { if (location.href.indexOf('//item.jd.com') > 0 || location.href.indexOf('//i-item.jd.com') > 0) { if ($2(".summary-first").length > 0) { $2(".summary-first").after(couponArea); } else if ($2("#summary").length > 0) { $2("#summary").after(couponArea); } else if ($2("#pingou").length > 0) { $2("#pingou").after(couponArea); } } else if (location.href.indexOf('//item.jd.hk') > 0) { if ($2(".summary-first").length > 0) { $2(".summary-first").after(couponArea); } else if ($2("#summary").length > 0) { $2("#summary").after(couponArea); } else if ($2("#summary-wrap").length > 0) { $2("#summary-wrap").after(couponArea); } else if ($2(".summary").length > 0) { $2(".summary").after(couponArea); } } else if (location.href.indexOf('//pcitem.jd.hk') > 0) { if ($2(".summary").length > 0) { $2(".summary").after(couponArea); } } var qr_code_text = obj.DetailPageTB_or_TM_or_JD() + '//' + productId; } else if (obj.site_type() == "vip_detail_page" || obj.site_type() == "vip_detail_page_m") { if ($2("#J-pi-price-box").length > 0) { $2("#J-pi-price-box").after(couponArea); } var qr_code_text = location.href.split("?")[0] + "?/--/vipvip"; } else if (obj.site_type() == "kaola_detail_page") { if ($2(".m-price-wrap").length > 0) { $2(".m-price-wrap").after(couponArea); } var qr_code_text = location.href.split("?")[0] + "?/--/kaola"; } else if (obj.site_type() == "suning_detail_page") { if ($2("#priceDom").length > 0) { $2("#priceDom").after(couponArea); } var qr_code_text = location.href.split("?")[0] + "?/--/suning"; } $2('.tabsholder2').cardTabs({ theme: 'wiki' }); $2(".coupon-wrap").eq(0).before(data.html); $2("#qrcode").qrcode({ width: 150, height: 150, text: qr_code_text }); $2("#a_click").click(function () { $2("#coupon-wrap-qr").css("display", "block"); obj.select_tab('返现码', '', 1); }); $2('#button_saveSetting').click(function () { for (let i = 0; i < $2('.radio_s').length; i++) { if ($2('.radio_s')[i].checked) { GM_setValue('radio_s', $2('.radio_s')[i].value); break; } } for (let i = 0; i < $2('.radio_ss').length; i++) { if ($2('.radio_ss')[i].checked) { GM_setValue('BWlist_sel', $2('.radio_ss')[i].value); break; } } obj.swal_fadeAway("保存成功", 1200); }); var radio_select = GM_getValue('radio_s', 'qrcode'); var stack_children = $2('.card-tabs-stack.wiki')[0].children; var bar_children = $2('.card-tabs-bar.wiki')[0].children; if (radio_select == "hide") { for (let i = 0; i < stack_children.length; i++) { stack_children[i].style.display = "none"; } for (let i = 0; i < bar_children.length; i++) { bar_children[i].removeAttribute('class'); } } else if (radio_select == "assistant") { obj.select_tab("抢购助手", "", 1); } else if (radio_select == "qrcode") { obj.select_tab("返现码", "", 1); } else if (radio_select == "trend") { obj.select_tab("价格走势", "", 1); } for (let i = 0; i < $2('.radio_s').length; i++) { if ($2('.radio_s')[i].value == radio_select) { $2('.radio_s')[i].checked = true; break; } } for (let i = 0; i < $2('.radio_ss').length; i++) { if ($2('.radio_ss')[i].value == BWlist_sel) { $2('.radio_ss')[i].checked = true; break; } } document.getElementsByClassName("card-tabs-bar wiki")[0].children[2].style.color = '#fb5414'; obj.initializePanicBuyingAssistant(); obj.query_trend_data(); var mouse_TO1; // if (obj.site_type() == "taobao_details_page") { // $2("#qrcode_coupon").qrcode({ width: 140, height: 140, text: data.url1, correctLevel: 0 }); // $2("#button_getCoupon").mouseenter(function () { // $2('#coupon_float_qr').css("display", "inline-block"); // }); // $2("#button_getCoupon").mouseleave(function () { // $2('#coupon_float_qr').css("display", "none"); // }); // } clearInterval(ls); return; } }, 100); setInterval(function () { var rm = '0'; var price = '0'; if (obj.site_type() == "taobao_details_page") { var price_str = ''; if ($2(".tm-price-panel").find(".tm-price").length > 0) { var price_str = $2(".tm-price-panel").find(".tm-price").html(); } else if ($2("#J_StrPrice").find(".tb-rmb-num").length > 0) { var price_str = $2("#J_StrPrice").find(".tb-rmb-num").html(); } var price = obj.get_tb_price(price_str); var price_prompt_str = ''; if ($2(".tm-promo-price").find(".tm-price").length > 0) { price_prompt_str = $2(".tm-promo-price").find(".tm-price").html(); } else if ($2("#J_PromoPriceNum").length > 0) { price_prompt_str = $2("#J_PromoPriceNum").html(); } var price_prompt = obj.get_tb_price(price_prompt_str); if (price != null) { if (price_prompt != null && price_prompt != '') { rm = Math.round(Math.floor((price_prompt - data.couponmoney) * data.return_money_rate * 1000) / 10) / 100; if (rm < 0) { rm = Math.round(Math.floor(price_prompt * data.return_money_rate * 1000) / 10) / 100; } } else { rm = Math.round(Math.floor((price - data.couponmoney) * data.return_money_rate * 1000) / 10) / 100; if (rm < 0) { rm = Math.round(Math.floor(price * data.return_money_rate * 1000) / 10) / 100; } } } } else if (obj.site_type() == "jingdong_details_page") { if (location.href.indexOf('//item.jd.com')) { if ($2("#summary-price").find("#jd-price").length > 0) { price = $2("#summary-price").find("#jd-price").html().split("</span>")[1]; } else if ($2(".p-price").find("span").eq(1).length > 0) { price = $2(".p-price").find("span").eq(1).html(); } } else { price = $2(".p-price").find("span").eq(1).html(); } if (price > 0) { rm = Math.round(Math.floor((price - data.couponmoney) * data.return_money_rate * 1000) / 10) / 100; if (rm < 0) { rm = Math.round(Math.floor(price * data.return_money_rate * 1000) / 10) / 100; } } } if (obj.site_type() == "vip_detail_page" || obj.site_type() == "vip_detail_page_m" || obj.site_type() == "kaola_detail_page" || obj.site_type() == "suning_detail_page") { if ($2("#rm_money").length > 0) { if (data.return_money > 0) { $2("#rm_money").html("返现约:" + Math.floor(data.return_money * 100) / 100 + "元"); if (data.couponmoney == 0) { $2("#faceValue").html(Math.floor(data.return_money * 100) / 100 + "元"); $2("#faceValueExplain").html("1.花前省一省APP扫返现码跳转<br>2." + site_type_chinese + "APP下单"); $2("#copy_div").css("display", ""); $2(".sign").css("display", ""); $2("#a_scanCodeCashback").css("cursor", "pointer"); $2("#a_scanCodeCashback").click(function () { $2(".card-tabs-stack.wiki").css("display", "none"); setTimeout(function () { obj.select_tab('返现码', '', 1); $2(".card-tabs-stack.wiki").css("display", "block"); }, 200); }); } } } } else if (rm > 0) { var str = '返现约:' + rm + '元' var str1 = rm + '元' $2("#rm_money").html(str); if (data.couponmoney == 0) { if (obj.site_type() != "jingdong_details_page") { $2("#faceValue").html(str1); $2("#faceValueExplain").html("1.花前省一省APP扫返现码跳转<br>2." + site_type_chinese + "APP下单"); $2("#copy_div").css("display", ""); $2(".sign").css("display", ""); $2("#a_scanCodeCashback").css("cursor", "pointer"); $2("#a_scanCodeCashback").click(function () { $2(".card-tabs-stack.wiki").css("display", "none"); setTimeout(function () { obj.select_tab('返现码', '', 1); $2(".card-tabs-stack.wiki").css("display", "block"); }, 200); }); } } } }, 300); } }; }; if (obj.site_type() == "taobao_details_page") { obj.generateCouponArea(); } else if (obj.site_type() == "taobao_lst_page") { if (document.title.indexOf("天猫超市") > 0) { // return; } var selectorList = []; var url = location.href; if ( url.indexOf("//s.taobao.com/search") > 0 || url.indexOf("//s.taobao.com/list") > 0 ) { selectorList.push(".items .item"); } else if (url.indexOf("//list.tmall.com/search_product.htm") > 0) { selectorList.push(".product"); selectorList.push(".chaoshi-recommend-list .chaoshi-recommend-item"); } else if (url.indexOf("//list.tmall.hk/search_product.htm") > 0) { selectorList.push("#J_ItemList .product"); } else if (url.indexOf("//maiyao.liangxinyao.com/shop/view_shop") > 0) { selectorList.push("#J_ShopSearchR###lt .item"); } if (selectorList && selectorList.length > 0) { obj.initSearchHtml(selectorList); obj.initSearchEvent(); obj.basicQuery_list(); } } else if (obj.site_type() == "jingdong_details_page") { obj.generateCouponArea(); } else if (obj.site_type() == "jingdong_lst_page") { var selectorList_jd = []; selectorList_jd.push(".gl-item"); selectorList_jd.push(".sku-detail"); obj.initSearchHtml(selectorList_jd); obj.initSearchEvent(); obj.basicQuery_list(); } else if (obj.site_type() == "vip_list_page") { var selectorList_vip = []; selectorList_vip.push(".c-goods-item"); obj.initSearchHtml(selectorList_vip); obj.initSearchEvent(); obj.basicQuery_list(); } else if (obj.site_type() == "vip_detail_page" || obj.site_type() == "vip_detail_page_m") { obj.generateCouponArea(); } else if (obj.site_type() == "huawei_detail_page") { obj.get_data(); } else if (obj.site_type() == "suning_detail_page") { // obj.generateCouponArea(); //get data obj.get_data(); if (stop == '1') { return; } } else if (obj.site_type() == "kaola_detail_page") { // obj.generateCouponArea(); //get data obj.get_data(); if (stop == '1') { return; } } window.onload = function () { } $2(document).ready(function () { if (obj.site_type() == "jingdong_details_page") { //先在页面最下面添加一个快速下单按钮 var goodsId = location.href.split("//")[1].split("/")[1].split(".")[0]; var pre_jd_html = '<a style="display:none;" href="https://plogin.m.jd.com/login/login?returnurl=' + encodeURI(location.href) + '" id="mjdLogin">登陆</a>' + '<a style="display:none;" href="https://wqs.jd.com/order/s_confirm_miao.shtml?sceneval=2&scene=jd&isCanEdit=1&commlist=,,1,' + goodsId + '" id="mjdChannel" style="display:">开始抢购</a>'; $2('body').append(pre_jd_html); } setTimeout(() => { if (obj.site_type() == "kaola_detail_page") { obj.generateCouponArea(); } else if (obj.site_type() == "suning_detail_page") { obj.generateCouponArea(); } }, 300); var keysActiveThisPage = []; var array_task = obj.getObjKeys(v_cookie); for (let i = 0; i < array_task.length; i++) { if (array_task[i] == 'mjdLogin') continue; console.log('▽方案过期情况▽'); console.log(array_task[i] + '\n' + obj.judgmentVirtualCookie(array_task[i])); if (obj_plans[array_task[i]] == null || obj_plans[array_task[i]] == undefined) { obj.delVirtualCookie(array_task[i]); continue; } if (array_task[i].indexOf('plan_') > -1 && v_cookie[array_task[i]]['active'] == '1' && obj.judgmentVirtualCookie(array_task[i])) { var objPlan_tmp = obj_plans[array_task[i]]['keys']; var host_array = obj.getObjKeys(objPlan_tmp); console.log($2.inArray(location.host, host_array) > -1); if ($2.inArray(location.host, host_array) > -1) { keysActiveThisPage = JSON.parse(JSON.stringify(obj_plans[array_task[i]]['keys'][location.host])); break; } } } console.log('▽keysActiveThisPage▽'); console.log(keysActiveThisPage); if (keysActiveThisPage != undefined && keysActiveThisPage.length > 0) { obj.addClickTask(keysActiveThisPage); } if (obj.site_type() != "jingdong_details_page" && obj.site_type() != "taobao_details_page" && obj.site_type() != "kaola_detail_page" && obj.site_type() != "vip_detail_page" && obj.site_type() != "suning_detail_page" && location.host != "bbs.youyizhineng.top" ) { console.log(BWlist_sel); var passUrl_arry = passUrl.split("\n"); var plans_arry = obj.getObjKeys(obj_plans); for (let i = 0; i < plans_arry.length; i++) { var host_arry = obj.getObjKeys(obj_plans[plans_arry[i]]['keys']); passUrl_arry = passUrl_arry.concat(host_arry); } passUrl = obj.uniqueArr(passUrl_arry).join("\n"); if (BWlist_sel == "black_mode") { var blockUrl_arry = blockUrl.split("\n"); console.log(blockUrl_arry); if (!(blockUrl_arry.length > 0 && $2.inArray(location.host, blockUrl_arry) > -1)) { //单独加载抢购助手 page_type = 'other_page'; $2('body').append(obj.getAssistantHtml()); $2('#float_assistant').append('<img id="smallIcon" src="https://s3.ax1x.com/2020/12/15/rKQCod.png" style="display:block;width:22px;height:22px">') $2('.tabsholder2').cardTabs({ theme: 'wiki' }); $2('#float_assistant')[0].children[0].style.display = 'none' $2('#float_assistant')[0].style.borderRadius = "999px"; obj.initializePanicBuyingAssistant('other_page'); } } else { if ($2.inArray(location.host, passUrl_arry) > -1) { //单独加载抢购助手 page_type = 'other_page'; $2('body').append(obj.getAssistantHtml()); $2('#float_assistant').append('<img id="smallIcon" src="https://s3.ax1x.com/2020/12/15/rKQCod.png" style="display:block;width:22px;height:22px">') $2('.tabsholder2').cardTabs({ theme: 'wiki' }); $2('#float_assistant')[0].children[0].style.display = 'none' $2('#float_assistant')[0].style.borderRadius = "999px"; obj.initializePanicBuyingAssistant('other_page'); } //遍历方案,把方案中的域名添加进入白名单 // console.log(passUrl); } for (let i = 0; i < $2('.radio_ss').length; i++) { if ($2('.radio_ss')[i].value == BWlist_sel) { $2('.radio_ss')[i].checked = true; break; } } } else { //首次安装提醒 var first_install = GM_getValue('first_install', '1'); if (first_install == '1') { obj.swal_info("温馨提醒", "尊敬的省一省Tampermonkey插件用户,您好:\n\n感谢您一直以来的陪伴,希望本插件及APP给您的购物带来便利。本次插件迎来重大升级:\n\n1. 新增抢购助手,方便您进行整点秒#等抢购操作\n2. 抢购方案可以自行制定,理论上任何网站抢任何东西都可以使用\n3. 抢购方案支持分享及导入,并设立了论坛方便大家分享及交流反馈\n4. 根据用户的反馈,对页面进行了改版,更节省空间同时可展示内容更丰富,可以设置是否默认展示“返现码”,“价格走势”等功能\n\n本消息仅在首次出现,感谢您的支持,这是我们团队前进的最大动力", "我知道啦", function () { swal("配置完毕请尽情使用~", { icon: "success", buttons: false, timer: 1200, }); obj.select_tab("抢购助手", "", 1); var prePlan_str1 = '{"plan_preSet_jdjs":{"plan_name":"预置:#东极速秒#v1.0","plan_info":"#东极速秒#方案","plan_type":"1","jd_spike":"1","plan_attributes1":"","plan_attributes2":"","plan_attributes3":"","isfinish":"1","keys":{"wq.jd.com":[{"key_name":"在线支付","press_num":"2","press_interval":"200","css_path":"div#payBtnList > div:nth-of-type(10) > a"}],"pay.m.jd.com":[{"key_name":"打白条支付","press_num":"2","press_interval":"200","css_path":"a.btn.pay-next.confirm-pay"}],"item.jd.com":[{"key_name":"开始抢购","press_num":"1","press_interval":"200","css_path":"a#mjdChannel"}]}}}'; var prePlan_str2 = '{"plan_preSet_jdks":{"plan_name":"预置:#东快速下单v1.0","plan_info":"1.加入购物车 2.去购物车结算 3.提交订单 ","plan_type":"1","jd_spike":"0","plan_attributes1":"","plan_attributes2":"","plan_attributes3":"","isfinish":"1","keys":{"item.jd.com":[{"key_name":"加入购物车","press_num":"1","press_interval":"0","css_path":"a#InitCartUrl"}],"cart.jd.com":[{"key_name":"去购物车结算","press_num":"2","press_interval":"200","css_path":"a#GotoShoppingCart"},{"key_name":"去结算","press_num":"2","press_interval":"200","css_path":"a.common-submit-btn"}],"pay.jd.com":[{"key_name":"立即支付","press_num":"50","press_interval":"200","css_path":"div.base-button.pointer-g"}],"trade.jd.com":[{"key_name":"提交订单","press_num":"5","press_interval":"300","css_path":"button#order-submit"}]}}}'; var prePlan_str3 = '{"plan_preSet_tbks":{"plan_name":"预置:淘宝、天猫快速下单v1.0","plan_info":"立即购买->提交订单->最终付款","plan_type":"1","jd_spike":"0","plan_attributes1":"","plan_attributes2":"","plan_attributes3":"","isfinish":"1","keys":{"buy.tmall.com":[{"key_name":"提交订单","press_num":"1","press_interval":"200","css_path":"a.go-btn"}],"cashiergan.alipay.com":[{"key_name":"确认付款","press_num":"50","press_interval":"200","css_path":"input#J_authSubmit"}],"detail.tmall.com":[{"key_name":"立即购买","press_num":"1","press_interval":"0","css_path":"a#J_LinkBuy"}],"buy.taobao.com":[{"key_name":"提交订单","press_num":"1","press_interval":"200","css_path":"a.go-btn"}],"item.taobao.com":[{"key_name":"立即购买","press_num":"1","press_interval":"0","css_path":"a.J_LinkBuy"}]}}}'; obj.addPlan(prePlan_str1); obj.addPlan(prePlan_str2); obj.addPlan(prePlan_str3); //绑定方案 var planss = GM_getValue("obj_plans"); var obj_planss = JSON.parse(planss); var arryPlanId = obj.getObjKeys(obj_planss); var select_plans = document.getElementById('panicBuyingPlan'); for (let i = 0; i < arryPlanId.length; i++) { if (obj_planss[arryPlanId[i]]['isfinish'] == '0') continue; var new_option = document.createElement('option'); new_option.value = arryPlanId[i]; new_option.innerText = obj_planss[arryPlanId[i]]['plan_name']; select_plans.appendChild(new_option); } GM_setValue('first_install', '0'); GM_setValue('last_ver', version); }); } else { var last_ver = GM_getValue('last_ver', ''); if (last_ver == '' || last_ver < version) { GM_setValue('BWlist_sel', 'white_mode'); obj.swal_info(null, "插件更新成功,本次更新\n\n1.新增苏宁易购返现码显示。\n2. 默认悬浮球屏蔽模式为白名单模式", "确定", function () { var prePlan_str1 = '{"plan_preSet_jdjs":{"plan_name":"预置:#东极速秒#v1.0","plan_info":"#东极速秒#方案","plan_type":"1","jd_spike":"1","plan_attributes1":"","plan_attributes2":"","plan_attributes3":"","isfinish":"1","keys":{"wq.jd.com":[{"key_name":"在线支付","press_num":"2","press_interval":"200","css_path":"div#payBtnList > div:nth-of-type(10) > a"}],"pay.m.jd.com":[{"key_name":"打白条支付","press_num":"2","press_interval":"200","css_path":"a.btn.pay-next.confirm-pay"}],"item.jd.com":[{"key_name":"开始抢购","press_num":"1","press_interval":"200","css_path":"a#mjdChannel"}]}}}'; var prePlan_str2 = '{"plan_preSet_jdks":{"plan_name":"预置:#东快速下单v1.0","plan_info":"1.加入购物车 2.去购物车结算 3.提交订单 ","plan_type":"1","jd_spike":"0","plan_attributes1":"","plan_attributes2":"","plan_attributes3":"","isfinish":"1","keys":{"item.jd.com":[{"key_name":"加入购物车","press_num":"1","press_interval":"0","css_path":"a#InitCartUrl"}],"cart.jd.com":[{"key_name":"去购物车结算","press_num":"2","press_interval":"200","css_path":"a#GotoShoppingCart"},{"key_name":"去结算","press_num":"2","press_interval":"200","css_path":"a.common-submit-btn"}],"pay.jd.com":[{"key_name":"立即支付","press_num":"50","press_interval":"200","css_path":"div.base-button.pointer-g"}],"trade.jd.com":[{"key_name":"提交订单","press_num":"5","press_interval":"300","css_path":"button#order-submit"}]}}}'; var prePlan_str3 = '{"plan_preSet_tbks":{"plan_name":"预置:淘宝、天猫快速下单v1.0","plan_info":"立即购买->提交订单->最终付款","plan_type":"1","jd_spike":"0","plan_attributes1":"","plan_attributes2":"","plan_attributes3":"","isfinish":"1","keys":{"buy.tmall.com":[{"key_name":"提交订单","press_num":"1","press_interval":"200","css_path":"a.go-btn"}],"cashiergan.alipay.com":[{"key_name":"确认付款","press_num":"50","press_interval":"200","css_path":"input#J_authSubmit"}],"detail.tmall.com":[{"key_name":"立即购买","press_num":"1","press_interval":"0","css_path":"a#J_LinkBuy"}],"buy.taobao.com":[{"key_name":"提交订单","press_num":"1","press_interval":"200","css_path":"a.go-btn"}],"item.taobao.com":[{"key_name":"立即购买","press_num":"1","press_interval":"0","css_path":"a.J_LinkBuy"}]}}}'; obj.addPlan(prePlan_str1); obj.addPlan(prePlan_str2); obj.addPlan(prePlan_str3); //绑定方案 var planss = GM_getValue("obj_plans"); var obj_planss = JSON.parse(planss); var arryPlanId = obj.getObjKeys(obj_planss); var select_plans = document.getElementById('panicBuyingPlan'); for (let i = 0; i < arryPlanId.length; i++) { if (obj_planss[arryPlanId[i]]['isfinish'] == '0') continue; var new_option = document.createElement('option'); new_option.value = arryPlanId[i]; new_option.innerText = obj_planss[arryPlanId[i]]['plan_name']; select_plans.appendChild(new_option); } GM_setValue('last_ver', version); location.reload(); }) } } } if (obj.site_type() == "kaola_list_page") { var selectorList_kaola = []; selectorList_kaola.push(".goods.colorsku"); obj.initSearchHtml(selectorList_kaola); obj.initSearchEvent(); obj.basicQuery_list(); } }); // window.onload = function () { $2(window).load(function () { if (location.host == "bbs.youyizhineng.top") { //单独加载抢购助手 page_type = 'other_page'; $2('body').append(obj.getAssistantHtml()); $2('#float_assistant').append('<img id="smallIcon" src="https://s3.ax1x.com/2020/12/15/rKQCod.png" style="display:block;width:22px;height:22px">') $2('.tabsholder2').cardTabs({ theme: 'wiki' }); $2('#float_assistant')[0].children[0].style.display = 'none' $2('#float_assistant')[0].style.borderRadius = "999px"; obj.initializePanicBuyingAssistant('other_page'); setInterval(() => { var array_topics = document.getElementsByClassName('language-json hljs'); for (let i = 0; i < array_topics.length; i++) { if (array_topics[i].hasAttribute('plugin')) { continue; } else { var new_div = document.createElement('div'); new_div.style.textAlign = 'left'; var new_button = document.createElement('buton'); new_button.className = ' SplitDropdown-button Button Button--primary hasIcon'; new_button.style.backgroundColor = '#ffcc00'; new_button.style.color = '#000000'; new_button.innerHTML = '导入方案到小助手'; new_button.setAttribute('name', 'yh'); new_button.onclick = function () { var plan_str = this.parentNode.previousSibling.querySelector('code').innerText; obj.importPlan('bbs', plan_str); } var new_button_copy = document.createElement('buton'); new_button_copy.className = ' SplitDropdown-button Button Button--primary hasIcon'; new_button_copy.innerHTML = '复制'; new_button_copy.style.float = 'right'; new_button_copy.onclick = function () { var plan_str = this.parentNode.previousSibling.querySelector('code').innerText; GM_setClipboard(plan_str, 'text'); obj.swal_fadeAway("复制成功", 1200); } new_div.append(new_button); new_div.append(new_button_copy); array_topics[i].parentNode.after(new_div); new_button.parentNode.previousSibling.setAttribute('flag', 'true'); array_topics[i].setAttribute('plugin', 'true'); } } var array_inster_button = document.getElementsByName('yh'); for (let i = 0; i < array_inster_button.length; i++) { var tmp = array_inster_button[i].parentNode.previousSibling; if (tmp == null || !tmp.hasAttribute('flag')) { array_inster_button[i].parentNode.remove(); } } //升级判断 var version_new = $2(".item-link1").find('a')[0].text; if (version_new.indexOf("(有更新)") < 0 && version < version_new.split("v")[1]) { $2(".item-link1").find('a')[0].text = (version_new + "(有更新)"); } }, 500); } }) })();