您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Greasy Fork is available in English.
storehouse
此脚本不应直接安装。它是供其他脚本使用的外部库,要使用该库请加入元指令 // @require https://update.greasyfork.icu/scripts/491812/1355250/hywjxyyjy.js
// ==UserScript== // @name hywjxyyjy // @version 0.0.1 // @description storehouse // @author Xiguayaodade // @license MIT // @match *://sdnew.91huayi.com/* // @grant GM_info // @grant GM_getTab // @grant GM_saveTab // @grant GM_setValue // @grant GM_getValue // @grant GM_addStyle // @grant unsafeWindow // @grant GM_listValues // @grant GM_deleteValue // @grant GM_setClipboard // @grant GM_notification // @grant GM_xmlhttpRequest // @grant GM_getResourceText // @grant GM_registerMenuCommand // @grant GM_unregisterMenuCommand // @grant GM_addValueChangeListener // @grant GM_removeValueChangeListener // @namespace http://tampermonkey.net/ // @homepage http://8.130.116.135/?article/ // @source http://8.130.116.135/?article/ // @icon https://picx.zhimg.com/v2-ce62b58ab2c7dc67d6cabc3508db5795_l.jpg?source=32738c0c // @connect icodef.com // @connect localhost // @connect 8.130.116.135 // @connect aip.baidubce.com // @require https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js // ==/UserScript== (function() { 'use strict'; /* globals jQuery, $, waitForKeyElements */ unsafeWindow.GM_getValue = GM_getValue var ddds3 = null; var addMessage = null; /** *播放器 *@type {dom} */ var elevideo; /** *var courseId = GM_getValue("courseId"); *@type {int} */ var courseId = 1; /** *courseCount *@type {int} */ var courseCount = null; /** *courseIndex *@type {int} */ var courseIndex = null; /** *capterCount *@type {int} */ var capterCount = null; var stInter = null; let btn1=GM_registerMenuCommand ("\u4f5c\u8005\uff1a\ud83c\udf49\u897f\u74dc\u8981\u5927\u7684\ud83c\udf49", function(){ confirm("Hello,\u611f\u8c22\u4f7f\u7528\ud83c\udf49\u897f\u74dc\u5237\u8bfe\u52a9\u624b\ud83c\udf49\uff01\u591a\u591a\u53cd\u9988\u54e6"); GM_unregisterMenuCommand(btn1); }, ""); let btn2=GM_registerMenuCommand ("\u4ed8\u8d39\u5185\u5bb9", function(){ alert("\u9650\u65f6\u514d\u8d39\uff0c\u5168\u529b\u5f00\u53d1\u4e2d..."); }, "p"); var bootstrapCSS = document.createElement("link"); bootstrapCSS.rel = "stylesheet"; bootstrapCSS.href = "https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css"; document.head.appendChild(bootstrapCSS); var bootstrapJS = document.createElement("script"); bootstrapJS.src = "https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.min.js"; document.body.appendChild(bootstrapJS); //----解决重复监听start---- //视频开始的公共方法 var vdplay = null; //视频正在播放的公共方法 var vdplaying = null; //视频暂停的公共方法 var vdpause = null; //视频结束的公共方法 var vdended = null; //监听音量的公共方法 var vdvolume = null; //----解决重复监听end---- var radioIndex = 0; var checkboxIndex = 0; var radioCount = 0; var checkboxCount = 0; var examAllCount = 0; var trueAnswrItem; //------等待网页加载完成start----- var wait = setInterval(function (){ ddds3.children().remove(); addMessage("注意:脚本自动答题期间请勿操作"); let nowHost = window.location.host; if(nowHost === 'sdnew.91huayi.com'){ try { addMessage("考试页..."); trueAnswrItem = document.querySelector("#examNav > dl > dd").children; examAllCount = trueAnswrItem.length; let wahtDo = true; if(wahtDo){ addMessage("开始考试..."); // examAnswerNew(); $("#exampage").delegate(':radio', 'click', function () { console.log("=======开始======="); console.log("$(this)",$(this)); console.log("$(this).parents('dd')",$(this).parents('dd')); console.log("$(this).parents('dd').attr('id')",$(this).parents('dd').attr('id')); var qid = $(this).parents('dd').attr('id'); console.log("qid",qid); console.log("=======qid======="); $("[liqid='" + qid + "']").addClass("right_part02_blue"); $(this).parent('span').removeClass("span02").addClass("span01"); $(this).parent('span').siblings(".span01").removeClass("span01").addClass("span02"); console.log("$(this).val()",$(this).val()); var root = $(this).val(); console.log("=======$(this).val()======="); $(this).parents('dd').attr('title', root); var answer = ""; if (root != null) { answer = root; console.log("answer",answer); console.log("=======结束======="); } console.log("qid.substring(1, qid.length)", qid.substring(1, qid.length)); SetAnswer(answer, qid.substring(1, qid.length)); // SetCompleteCount(); }); GetPaperQuestions(); setTimeout(function(){ if(autoExam()){ $("#reExam").text("自动收集已开启"); examAnswerNew(); } else{ $("#reExam").text("自动收集已关闭"); } },500); } else if(document.getElementsByClassName("ant-alert-message")[0] === undefined){ addMessage("请单击重新考试按钮..."); // examAnswerRe(); // examAnswerNew(); } else{ addMessage("请单击搜集,将自动抓取正确答案"); // examRadio(); } clearInterval(wait); }catch(e){ addMessage("发现异常:"+e+"|程序已终止运行..."); clearInterval(wait); return; } } else{ addMessage("请前往考试页"); } }, 1000); function autoExam(){ let oldData = GM_getValue('autoExam'); if(oldData === undefined || oldData === '' || oldData === null){ GM_setValue('autoExam',true); return GM_getValue('autoExam'); } return GM_getValue('autoExam'); } //------等待网页加载完成end----- //提交 function SubPaper(pid,qid,opAnswer) { // $.cookie("switchTime" + $("#exam_id").val() + "_" + $("#user_id").val(), '', { expires: -1 }); $("#subPaper").attr("disabled", "disabled"); clearTimeout(timer); var signData = {}; signData["user_id"] = $("#user_id").val(); signData["examId"] = $("#exam_id").val(); signData["paperId"] = $("#paper_id").val(); signData["examLogId"] = $("#examLogId").val(); signData["answerTime"] = answer_duration; signData["totalTime"] = totalTime; signData["timestamp"] = Date.parse(new Date(Common.GetSystemDateTime())) / 1000; console.log("==========sub==================") console.log("signData",signData); var sign = Common.Signature(signData); console.log("sign",sign); console.log("==========ajax==================") console.log("userAnswer",userAnswer); $.ajax({ url: "/ExamInterface/SaveExamData", type: "POST", headers: { "sign": sign }, timeout: 1000 * 30, data: { userAnswer: JSON.stringify(userAnswer), paperContent: "", userId: $("#user_id").val(), examId: $("#exam_id").val(), index: $("#paper_index").val(), paperId: $("#paper_id").val(), answerDuration: answer_duration, genre: 'pc', totalTimes: totalTime, timestamp:signData["timestamp"], wrongQuestionState: $("#wrongQuestion_state").val(), examLogId: $("#examLogId").val(), t: new Date().getTime() }, dataType: "json", success: function (json) { if (json.status === 0) { console.log("错误", "提交失败!"); } else if (json.status === 3) { console.log("错误", "考试次数已达到限制,不可再进行考试!"); } else if (json.status === 4) { console.log("提示", "本场考试开始" + json.answer_time_less + "分钟内不允许交卷,请知悉!"); } else if (json.status === 5) { console.log("错误"); } else if (json.status === 6 || json.status === 7) { var tipsMsg = json.status == 6 ? "提交数据异常,答题结果已保存,请等待管理员审核,错误码:" + json.errorCode : "没有查询到人脸识别记录,请重新作答!"; console.log("/ExamInterface/ComputerExamError?msg=" + tipsMsg); } else if (json.status === 1) { // $.cookie('switchTime' + $("#exam_id").val(), null); var total = json.totalQuestion; //答对题数(总题数-错题数) var dd = total - json.wrongQuestion; console.log("得到",dd,"分"); if(dd >= 80){ addMessage('提交成功:'+dd+"分。") return; } if(dd == 1 && opAnswer != ''){ saveErrorAnswers(pid,qid,opAnswer,''); }else if(dd == 0 && opAnswer != ''){ saveErrorAnswers(pid,qid,'',opAnswer); } var resultUrl = $("#result_url").val(); if (resultUrl != null && resultUrl !== "" && resultUrl !== undefined) { var param = "score=" + json.Score + "&correctNum=" + dd + "&mistakeNum=" + json.wrongQuestion + "&user_id=" + $("#user_id").val() + "&exam_result_id=" + json.exam_result; console.log(resultUrl.indexOf('?') > 0 ? resultUrl + "&" + param : resultUrl + "?" + param); } else { console.log("/ExamInterface/ComputerExamResult?examResultId=" + json.exam_result + "&user_id=" + $("#user_id").val() + "&backUrl=" + $("#back_url").val() + "&analysis=" + $("#analysis_state").val()); } } else { console.log("错误", "提交失败!"); } }, complete: function (XMLHttpRequest, status) { //请求完成后最终执行参数 if (status === 'timeout') { console.log("提示", "提交超时,请重试!"); } } }); }; //设置提交答案 function SetAnswer(answer, qid) { for (var i = 0; i < userAnswer.length; i++) { if (userAnswer[i].question_id == qid) { userAnswer[i].answer = $.trim(answer); break; } } console.log("userAnswer",userAnswer); } //获取整卷考题 function GetPaperQuestions(){ $.ajax({ type: "POST", url: "/ExamPage/GetPaperQuestions", data: { paperID: $("#paper_id").val(), userId: $("#user_id").val(), examId: $("#exam_id").val(), breakPoint: true, t: new Date().getTime() }, async: false, dataType: "JSON", success: function (json) { if (json.status == 1) { if(savePaperQuestions($("#paper_id").val(),json.data[0].Question)){ console.log("试卷保存成功") } if(saveUserAnswer($("#paper_id").val(),userAnswer)){ console.log("答题模板本地保存成功") } } else { console.log("错误", "加载失败!"); } }, error: function (XMLHttpRequest, textStatus, errorThrown) { console.log("错误", "加载失败!"); } }); } //保存整卷考题 function savePaperQuestions(paperID,paperQuestions){ let gmPaperQuestions = getGMPaperQuestions(); let juge = gmPaperQuestions.some(obj => obj.hasOwnProperty(paperID)); if (juge) { addMessage("该试卷已存在..."); console.log("该试卷已存在"); console.log("本地试卷",GM_getValue('paperQuestions')); return false; } let tempMap = {}; tempMap[paperID] = paperQuestions; gmPaperQuestions.push(tempMap); console.log("整卷考题:",gmPaperQuestions); GM_setValue('paperQuestions',gmPaperQuestions); return true; } //更新整卷考题答案 function upPaperQuestions(paperID,question_id,answer){ let gmPaperQuestions = getGMPaperQuestions(); // 找到键为'paperID'的对象 let obj = gmPaperQuestions.find(item => paperID in item); // 找到qid为'question_id'的对象 let qidObj = obj[paperID].find(item => item.question_id === question_id); // 更新answer为answer if (qidObj) { qidObj.answer = answer; } GM_setValue('paperQuestions',gmPaperQuestions); } //获取本地整卷考题 function getGMPaperQuestions(){ let oldData = GM_getValue('paperQuestions'); if (Array.isArray(oldData)) { return oldData; } return []; } //保存答题模板至本地 function saveUserAnswer(paperID,userAnswer){ let gmUserAnswer = getGMUserAnswer(); let juge = gmUserAnswer.some(obj => obj.hasOwnProperty(paperID)); if (juge) { addMessage("本地答题模板已存在..."); console.log("本地答题模板已存在"); console.log("本地答题模板",GM_getValue('userAnswer')); return false; } let tempMap = {}; tempMap[paperID] = userAnswer; gmUserAnswer.push(tempMap); console.log("本地答题模板:",gmUserAnswer); GM_setValue('userAnswer',gmUserAnswer); return true; } //获取本地答题模板 function getGMUserAnswer(){ let oldData = GM_getValue('userAnswer'); if (Array.isArray(oldData)) { return oldData; } return []; } //获取本地错题集 function getGMErrorAnswers(){ let oldData = GM_getValue('errorAnswers'); if (Array.isArray(oldData)) { return oldData; } return []; } //更新本地错题集 function saveErrorAnswers(pid,qid,rightAnswer = '',errorAnswer = ''){ let gmErrorAnswers = getGMErrorAnswers(); let juge = gmErrorAnswers.some(obj => obj.hasOwnProperty(qid)); let tempMap = {}; if (juge) { addMessage("找到错题记录..."); console.log("找到错题记录..."); if(rightAnswer != ''){ console.log("保存正确答案到本地试卷..."); } else{ console.log("更新错题集..."); gmErrorAnswers.reduce((accumulator, obj) => { if (qid in obj) { obj[qid].push(errorAnswer); } return accumulator; }, undefined); console.log("gmErrorAnswers",gmErrorAnswers); } }else{ console.log("没有错题记录..."); if(rightAnswer != ''){ console.log("保存正确答案到本地试卷..."); upPaperQuestions(pid,qid,rightAnswer) console.log(pid,qid); console.log("getGMPaperQuestions",getGMPaperQuestions()); setTimeout(function(){ window.location.reload(); // examAnswerNew(); },250); } else{ console.log("记录新的错题集并清除本地考卷内错误答案..."); let tempMap = {}; tempMap[qid] = [errorAnswer]; gmErrorAnswers.push(tempMap); console.log("gmErrorAnswers",gmErrorAnswers); console.log(pid,qid); delGMErrorAnswer(pid,qid,errorAnswer); setTimeout(function(){ window.location.reload(); // examAnswerNew(); },250); } } } //清除本地考卷错误答案 function delGMErrorAnswer(pid,qid,errorAnswer){ let gMPaperQuestions = getGMPaperQuestions(); console.log("gMPaperQuestions",gMPaperQuestions) // 找到键为'pid'的对象 let obj = gMPaperQuestions.find(item => pid in item); // 找到qid为'qid'的对象 let qidObj = obj[pid].find(item => item.question_id === qid); console.log("qidObj",qidObj) // 更新answer为'A' if (qidObj) { qidObj.Options.shift(); } console.log("删除结果",gMPaperQuestions); GM_setValue('paperQuestions',gMPaperQuestions) } //根据错题集得到试探选项 function getOptionByErrorAnswer(pid,qid){ let gMPaperQuestions = getGMPaperQuestions(); let Options = gMPaperQuestions.reduce((accumulator, obj) => { if (pid in obj) { return obj[pid].find(obj => obj.question_id === qid).Options; } return accumulator; }, undefined); console.log('Options',Options); return Options[0].question_options_id; } function goTest(){ let nowUrl = window.location.href; if(nowUrl.substring(0,30) === 'http://www.lnlpa.cn/OnlineTest'){ try { ddds3.children().remove(); addMessage("开始考试..."); if(document.querySelector(".radioList") != null){ radioCount = document.querySelector(".questionList").children[0].children[1].childElementCount; } if(document.querySelector(".checkboxList") != null){ checkboxCount = document.querySelector(".questionList").children[1].children[1].childElementCount; } examRadio(); }catch(e){ addMessage("发现异常:"+e+"|程序已终止运行..."); clearInterval(wait); return; } } else{ ddds3.children().remove(); addMessage("请进入考试页再使用此功能..."); } } function wkAnswer(wkType,answor){ if(wkType === '单选题:'){ console.log("单选\u7b2c"+(radioIndex+1)+"\u9898"); addMessage("单选\u7b2c"+(radioIndex+1)+"\u9898"); let answerPrint; try{ answerPrint = answor.match(/[A-E]/g)[0]; } catch(e){ addMessage("请查看参考答案:"+answor); } console.log("answerPrint",answerPrint); addMessage(answerPrint); switch(answerPrint) { case 'A': document.querySelector(".questionList").children[0].children[1].children[radioIndex].children[1].children[0].click(); break; case 'B': document.querySelector(".questionList").children[0].children[1].children[radioIndex].children[1].children[1].click(); break; case 'C': document.querySelector(".questionList").children[0].children[1].children[radioIndex].children[1].children[2].click(); break; case 'D': document.querySelector(".questionList").children[0].children[1].children[radioIndex].children[1].children[3].click(); break; case 'E': document.querySelector(".questionList").children[0].children[1].children[radioIndex].children[1].children[4].click(); break; } radioIndex++; } if(wkType === '多选题:'){ console.log("多选\u7b2c"+(checkboxIndex+1)+"\u9898"); addMessage("多选\u7b2c"+(checkboxIndex+1)+"\u9898"); let answerPrint; let duoxuan = /\[(.*?)\]/.exec(answor)[1]; if(duoxuan === null){ let str1 = answor.split('。')[0]; answerPrint = str1.match(/[A-E]/g); } else{ answerPrint = duoxuan.split(''); } console.log("---------------------",answerPrint); addMessage(answerPrint); answerPrint.forEach((answer, index) => { setTimeout(() => { let clickTarget; switch(answer) { case 'A': console.log("---------------------"+checkboxIndex); clickTarget = document.querySelector(".questionList").children[1].children[1].children[checkboxIndex].children[1].children[0]; break; case 'B': console.log("---------------------"+checkboxIndex); clickTarget = document.querySelector(".questionList").children[1].children[1].children[checkboxIndex].children[1].children[1]; break; case 'C': console.log("---------------------"+checkboxIndex); clickTarget = document.querySelector(".questionList").children[1].children[1].children[checkboxIndex].children[1].children[2]; break; case 'D': console.log("---------------------"+checkboxIndex); clickTarget = document.querySelector(".questionList").children[1].children[1].children[checkboxIndex].children[1].children[3]; break; case 'E': console.log("---------------------"+checkboxIndex); clickTarget = document.querySelector(".questionList").children[1].children[1].children[checkboxIndex].children[1].children[4]; break; case 'F': clickTarget = document.querySelector(".questionList").children[1].children[1].children[checkboxIndex].children[1].children[5]; break; case 'G': clickTarget = document.querySelector(".questionList").children[1].children[1].children[checkboxIndex].children[1].children[6]; break; case 'H': clickTarget = document.querySelector(".questionList").children[1].children[1].children[checkboxIndex].children[1].children[7]; break; case 'I': clickTarget = document.querySelector(".questionList").children[1].children[1].children[checkboxIndex].children[1].children[8]; break; default: console.log("当前多选题选择过多,系统需更新!"); addMessage("当前多选题选择过多,系统需更新!"); return; } if (clickTarget) { clickTarget.click(); console.log("点击" + answer); } }, index * 50); // 将每次点击的延迟设置为 500ms * 索引 }); setTimeout(function(){ checkboxIndex++; },3000); } setTimeout(function(){ examRadio(); },3500); } var examRadioText = '单选题:'; var examCheckboxText = '多选题:'; function juTorF(rIndex){ let a = trueAnswrItem[rIndex-1].className; if(a === 'right_part02_blue'){ return false; }else{ return true; } } function getAnswer(){ let oldData = GM_getValue('answerList'); if (Array.isArray(oldData)) { return oldData; } return []; } function saveAnswer(answer_key,answer){ let answerList = getAnswer(); let juge = answerList.some(obj => obj.hasOwnProperty(answer_key)); if (juge) { addMessage("该答案已存在..."); console.log("该答案已存在"); return false; } let tempMap = {}; tempMap[answer_key] = answer; answerList.push(tempMap); // console.log(answerList); GM_setValue('answerList',answerList); return true; } function examRadio(){ if(radioIndex < examAllCount){ let answer_key = trueAnswrItem[radioIndex].getAttribute('ques_key'); if(juTorF(radioIndex)){ let answerStr = trueAnswrItem[radioIndex].getElementsByClassName("true-answer")[0].innerText; let regex = /[A-Za-z]+/g; let answer = answerStr.match(regex)[0]; console.log("第",(radioIndex+1),"题答案:",answer,"开始保存"); if(saveAnswer(answer_key,answer)){ console.log("错题保存成功..."); }else{ console.log("错题保存失败..."); } radioIndex++; examRadio(); }else{ let trueAe = optionTrue(radioIndex); console.log("第",(radioIndex+1),"正确答案:",trueAe); if(saveAnswer(answer_key,trueAe)){ console.log("正确答案记录成功..."); }else{ console.log("正确答案记录失败..."); } radioIndex++; examRadio(); } }else{ console.log("搜集完毕,开始纠错"); addMessage("搜集完毕,可以开始重新考试"); toggleOverlay(false); // let as = getAnswer(); // console.log(as); radioIndex = 0; setTimeout(function(){ console.log('-------'); // examAnswer(); },1500); } } function goExam(){ let as1 = getGMPaperQuestions(); radioIndex = parseInt(document.querySelector("#exampage > dl > dd.dd_01 > span").innerText); if(radioIndex <= examAllCount){ let paperID = $("#paper_id").val(); let questionid = document.querySelector("#exampage").children[0].children[1].getAttribute('questionid'); addMessage("questionid"+questionid); let result = as1.reduce((accumulator, obj) => { if (paperID in obj) { return obj[paperID].find(obj => obj.question_id === questionid).answer; } return accumulator; }, undefined); if (result !== undefined && result !== '') { addMessage('right',result); if(document.querySelector("#btnNext").style[0] === 'display'){ addMessage('作答完毕,提交'); SubPaper('','','') toggleOverlay(false); return; } SetAnswer(result, questionid); setTimeout(function(){ document.querySelector("#btnNext").click(); setTimeout(function(){ goExam(); },100); },10); // inputRadio(0,result.length,result); } } } function examAnswerNew(){ let as1 = getGMPaperQuestions(); radioIndex = parseInt(document.querySelector("#exampage > dl > dd.dd_01 > span").innerText); if(radioIndex <= examAllCount){ let paperID = $("#paper_id").val(); let questionid = document.querySelector("#exampage").children[0].children[1].getAttribute('questionid'); addMessage("questionid"+questionid); let result = as1.reduce((accumulator, obj) => { if (paperID in obj) { return obj[paperID].find(obj => obj.question_id === questionid).answer; } return accumulator; }, undefined); if (result !== undefined && result !== '') { addMessage('right',result); console.log('找到答案',result); if(document.querySelector("#btnNext").style[0] === 'display'){ addMessage('此试卷已经收录所有答案,请关闭自动收集后刷新页面点击“开始考试”'); return; } // SetAnswer(result, questionid); setTimeout(function(){ document.querySelector("#btnNext").click(); setTimeout(function(){ examAnswerNew(); },100); },10); // toggleOverlay(false); // inputRadio(0,result.length,result); } else { console.log('未找到答案'); //拿到无答案提交模板 // let subAnswer = getGMUserAnswer().reduce((accumulator, obj) => { // if (paperID in obj) { // return obj[paperID]; // } // return accumulator; // }, undefined); // console.log('拿到无答案提交模板',subAnswer); //获取当前题目的试探选项 let options_id = getOptionByErrorAnswer(paperID,questionid); //设置要提交的答案 SetAnswer(options_id, questionid) SubPaper(paperID,questionid,options_id); // let rand = Math.floor(Math.random() * 5 + 1); // document.querySelector("#exampage").children[0].getElementsByClassName('dd_03 q-content')[0].children[rand].children[0].click(); // setTimeout(function(){ // document.querySelector("#btnNext").click(); // setTimeout(function(){ // if(radioIndex == examAllCount){ // addMessage("考试完毕,提交"); // console.log('as1',as1); // toggleOverlay(false); // setTimeout(function(){},2000); // } // else{ // examAnswerNew(); // } // },100); // },100); } } } function inputRadio(index,count,result){ if(index < count){ switch(result[index]) { case 'A': console.log("第"+(radioIndex+1)+"题选","A"); radioOk(1) break; case 'B': console.log("第"+(radioIndex+1)+"题选","B"); radioOk(2) break; case 'C': console.log("第"+(radioIndex+1)+"题选","C"); radioOk(3) break; case 'D': console.log("第"+(radioIndex+1)+"题选","D"); radioOk(4) break; case 'E': console.log("第"+(radioIndex+1)+"题选","E"); radioOk(5) break; } setTimeout(function(){ inputRadio(index+1,count,result); },100); } else{ addMessage("ok"); } } function radioOk(index){ if(!document.querySelector("#exampage").children[0].getElementsByClassName('dd_03 q-content')[0].children[2].children[0].checked){ document.querySelector("#exampage").children[0].getElementsByClassName('dd_03 q-content')[0].children[2].children[0].click(); } } function examAnswerRe(){ if(radioIndex < examAllCount){ let answer_key = trueAnswrItem[radioIndex].getAttribute('ques_key'); console.log("radioIndex",radioIndex); if(!juTorF(radioIndex)){ let trueAe = optionTrue(radioIndex); console.log("第",(radioIndex+1),"正确答案:",trueAe); if(saveAnswer(answer_key,trueAe)){ console.log("正确答案记录成功..."); }else{ console.log("无需重复记录..."); } radioIndex++; examAnswerRe(); }else{ console.log("第",(radioIndex+1),"题答案错误无需记录"); trueAnswrItem[radioIndex].getElementsByClassName("ant-radio-group ant-radio-group-outline")[0].children[0].click(); radioIndex++; examAnswerRe(); } }else{ console.log("单项搜集完毕..."); let as1 = getAnswer(); console.log(as1); } } function examAnswer(){ let as1 = getAnswer(); radioIndex = parseInt(document.querySelector("#exampage > dl > dd.dd_01 > span").innerText); if(radioIndex <= examAllCount){ let answer_key = document.querySelector("#exampage").children[0].children[1].getAttribute('questionid'); if(juTorF(radioIndex)){ let result = as1.reduce((accumulator, obj) => { if (answer_key in obj) { return obj[answer_key]; } return accumulator; }, undefined); console.log('result',result); if (result !== undefined) { addMessage('result',result); inputRadio(0,result.length,result); } else { addMessage('未找到答案'); document.querySelector("#exampage").children[0].getElementsByClassName('dd_03 q-content')[0].children[3].children[0].click(); setTimeout(function(){ document.querySelector("#btnNext").click(); setTimeout(function(){ if(radioIndex == examAllCount){ addMessage("考试完毕,提交后如满分需刷新一次网页(以避免该平台BUG"); console.log('as1',as1); toggleOverlay(false); setTimeout(function(){},2000); } else{ examAnswerNew(); } },100); },200); } }else{ console.log("第"+(radioIndex+1)+"题正确(save)"); } }else{ console.log("纠错完毕"); ddds3.children().remove(); addMessage("已完成纠错,请提交,提交后需刷新一次网页(以避免该平台BUG)"); console.log('as1',as1); toggleOverlay(false); } } function optionTrue(radioIndex){ var parentElement = trueAnswrItem[radioIndex].getElementsByClassName("ant-radio-group ant-radio-group-outline")[0]; var childElement = trueAnswrItem[radioIndex].getElementsByClassName("ant-radio-group ant-radio-group-outline")[0].getElementsByClassName("ant-radio-wrapper ant-radio-wrapper-checked ant-radio-wrapper-in-form-item")[0]; var children = Array.from(parentElement.children); var index = children.indexOf(childElement); switch(index) { case 0: return 'A'; case 1: return 'B'; case 2: return 'C'; case 3: return 'D'; case 4: return 'E'; case 5: return 'F'; default: console.log("未知题型,需更新!"); return '未知'; } } function examCheckbox(){ if(checkboxIndex < checkboxCount){ console.log("多选题开始作答"); let qusetionStr = document.querySelector(".questionList").children[1].children[1].children[checkboxIndex].innerText; let newQusetionStr = qusetionStr.replace(/\n/g, ''); console.log(checkboxIndex,examCheckboxText,newQusetionStr); wait1(examCheckboxText,newQusetionStr); }else{ console.log("多选题作答完毕"); checkboxIndex = 0; addMessage("作答完毕,请手动提交"); } } var overlay = null; function toggleOverlay(show) { if (show) { overlay = document.createElement('div'); overlay.style.position = 'fixed'; overlay.style.top = '0'; overlay.style.left = '0'; overlay.style.width = '100%'; overlay.style.height = '100%'; overlay.style.backgroundColor = 'rgba(0, 0, 0, 0.5)'; overlay.style.zIndex = '9999'; overlay.addEventListener('click', function(event) { event.stopPropagation(); event.preventDefault(); }); document.body.appendChild(overlay); } else { if (overlay) { overlay.parentNode.removeChild(overlay); overlay = null; } } } const panel = function(){ var container = $('<div id="gm-interface"></div>'); var titleBar = $('<div id="gm-title-bar">\ud83c\udf49\u897f\u74dc\u7f51\u8bfe\u52a9\u624b\ud83c\udf49</div>'); var minimizeButton = $('<div title="\u6536\u8d77" style="display:black"><svg id="gm-minimize-button" class="bi bi-dash-square" viewBox="0 0 16 16" fill="currentColor" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M14 1H2a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1zM2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H2z"/><path fill-rule="evenodd" d="M3.5 8a.5.5 0 0 1 .5-.5h8a.5.5 0 0 1 0 1H4a.5.5 0 0 1-.5-.5z"/></svg></div>'); var maxButton = $('<div title="\u5c55\u5f00" style="display:none"><svg id="gm-minimize-button" class="bi bi-plus-square" viewBox="0 0 16 16" fill="currentColor" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M8 3.5a.5.5 0 0 1 .5.5v4a.5.5 0 0 1-.5.5H4a.5.5 0 0 1 0-1h3.5V4a.5.5 0 0 1 .5-.5z"/><path fill-rule="evenodd" d="M7.5 8a.5.5 0 0 1 .5-.5h4a.5.5 0 0 1 0 1H8.5V12a.5.5 0 0 1-1 0V8z"/><path fill-rule="evenodd" d="M14 1H2a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1zM2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H2z"/></svg></div>'); var content = $('<div id="gm-content"></div>'); var tips = $('<div class="tip" style="display:none;">\u957f\u6309\u62d6\u62fd</div>'); var scrollText = $('<marquee>').text('\u4e7e\u5764\u672a\u5b9a\uff0c\u4f60\u6211\u7686\u662f\u9ed1\u9a6c----\u4f5c\u8005\uff1a\u897f\u74dc\u8981\u5927\u7684\uff08\u611f\u8c22\u652f\u6301\uff01\uff09').css({ 'position': 'absolute', 'top': '15%', 'left': '50%', 'transform': 'translate(-50%, -50%)', 'width': '90%', 'height': '25px', 'font-size': '16px', 'line-height': '1.5', 'white-space': 'nowrap' }).appendTo(content); //var ddds1 = $('<div style="position: absolute;top: 20%;width:90%;height:10%;padding: 3px;background: #ffedf0;border-radius: 5px;">\u70b9\u51fb\u542f\u52a8\uff1a<button id="startxg" style="position: absolute;width:48px;right: 10px;background-color: #ffe5e5;border-radius: 4px;border-color: #ffc0c0;color: grey;">\u542f\u52a8</button></div>'); //var ddds5 = $('<div style="position: absolute;top: 35%;width:90%;height:10%;padding: 3px;background: #ffedf0;border-radius: 5px;">\u70b9\u51fb\u542f\u52a8\uff1a<button id="stopxg" style="position: absolute;width:48px;right: 10px;background-color: #ffe5e5;border-radius: 4px;border-color: #ffc0c0;color: grey;">暂停</button></div>'); var ddds2 = $('<div style="position: absolute;top: 73%;width:94%;height:10%;padding: 3px;background: #ffedf0;border-radius: 5px;">操作\uff1a<button id="goExam" style="position: absolute;width:80px;right: 248px;background-color: #ffe5e5;border-radius: 4px;border-color: #ffc0c0;color: grey;">开始考试</button><button id="reExam" style="position: absolute;width:150px;right: 98px;background-color: #ffe5e5;border-radius: 4px;border-color: #ffc0c0;color: grey;">自动收集已开启<button id="speedxgone" style="position: absolute;width:88px;right: 8px;background-color: #ffe5e5;border-radius: 4px;border-color: #ffc0c0;color: grey;">清空缓存</button></div>'); ddds3 = $('<div id="message-container" style="position: absolute;display: ;align-content: center;justify-content: center;top: 20%;width:94%;height:52%;max-height:9999%;overflow-y:auto;padding: 3px;background: #ffffff;border-radius: 5px;"></div>'); var ddds4 = $('<div style="position: absolute;top: 85%;width:94%;height:10%;padding: 3px;background: #ffedf0;border-radius: 5px;"><a href="http://8.130.116.135/?article/" style="position: absolute;right: 10px;text-decoration: none;color: pink;">\u003e\u003e\u003e\u8054\u7cfb\u003a\u0031\u0039\u0030\u0038\u0032\u0034\u0035\u0033\u0030\u0032\u0040\u0071\u0071\u002e\u0063\u006f\u006d</a></div>'); container.append(titleBar); //content.append(ddds1); //content.append(ddds5); content.append(ddds2); content.append(ddds3); content.append(ddds4); container.append(content); container.append(maxButton); container.append(minimizeButton); $('body').append(container); $('body').append(tips); GM_addStyle(` #gm-interface { position: fixed; top: 50%; left: 50%; border-radius: 5px; background-color: white; z-index: 9999; } #gm-title-bar { padding: 5px; background-color: #ffc0c0; border: 1px solid black; border-radius: 5px; cursor: grab; } #gm-minimize-button { position: absolute; top: 2px; right: 2px; width: 30px; height: 30px; border-radius: 5px; padding: 0; font-weight: bold; background-color: #ffc0c0; cursor: pointer; } #gm-content { padding: 10px; border: 1px solid black; border-radius: 2px 2px 5px 5px; background-color: #ffe5e5; width: 400px; height: 300px; } .tip{ font-family: "黑体"; color: black; -webkit-transform: scale(0.8); position:absolute; padding: 6px 5px; background-color:#ffe8f0; border-radius: 4px; z-index: 9999; } `); titleBar.on('mousemove',function(e){ tips.attr("style", "display:black;"); var top = e.pageY+5; var left = e.pageX+5; tips.css({ 'top' : top + 'px', 'left': left+ 'px' }); }); titleBar.on('mouseout',function(){ tips.hide(); }); titleBar.on('mousedown', function(e) { var startX = e.pageX - container.offset().left + window.scrollX; var startY = e.pageY - container.offset().top + window.scrollY; $(document).on('mousemove', function(e) { e.preventDefault(); var newX = e.pageX - startX; var newY = e.pageY - startY; container.css({ left: newX, top: newY }); }); $(document).on('mouseup', function() { $(document).off('mousemove'); $(document).off('mouseup'); }); }); minimizeButton.on('click', function() { minimizeButton.attr("style", "display:none;"); maxButton.attr("style", "display:black;"); content.slideToggle(0); container.css({ width: 200 }); }); maxButton.on('click', function() { minimizeButton.attr("style", "display:black;"); maxButton.attr("style", "display:none;"); content.slideToggle(0); container.css({ width: 400 }); }); $("#goTest").on('click',function(){ goTest(); }); $("#goExam").on('click',function(){ toggleOverlay(true); ddds3.children().remove(); addMessage("当前禁止点击,请不要关闭页面"); addMessage("开始考试(10s~20s),请耐心等待。。。"); setTimeout(function(){ radioIndex = 0; goExam(); },800); }); $("#reExam").on('click',function(){ if(autoExam()){ GM_setValue('autoExam',false); $("#reExam").text("自动收集已关闭"); }else{ GM_setValue('autoExam',true); $("#reExam").text("自动收集已开启"); } }); $("#goGetExam").on('click',function(){ toggleOverlay(true); ddds3.children().remove(); addMessage("当前禁止点击,请不要关闭页面"); addMessage("开始搜集,请稍后。。。"); setTimeout(function(){ try{ radioIndex = 0; examRadio(); }catch(e){ ddds3.children().remove(); addMessage("违规操作,请刷新后重试"); console.log(e); toggleOverlay(false); } },800); }); $("#speedxgone").on('click',function(){ GM_deleteValue("courseId"); GM_deleteValue("answerList"); GM_deleteValue("paperQuestions"); ddds3.children().remove(); addMessage("已清空缓存"); addMessage("调用wait1()"); console.log("调用wait1()"); wait1(); }); $("#switchButton").on('click',function(){ // if (speedonoff) { // speedonoff = false; // addMessage("\u500d\u901f\uff1a\u5173\u95ed"); // $("#switchButton").text("当前:关闭"); // } else { // speedonoff = true; // addMessage("\u500d\u901f\uff1a\u5f00\u542f"); // $("#switchButton").text("当前:开启"); // } }); // 监听鼠标滚轮事件,实现消息框滚动 ddds3.on('mousewheel', function(event) { event.preventDefault(); var scrollTop = ddds3.scrollTop(); ddds3.scrollTop(scrollTop + event.originalEvent.deltaY); }); // 添加新消息 addMessage = function(message){ // 检查消息数量,移除最早的一条消息 // if (ddds3.children().length >= 288) { // ddds3.children().first().remove(); // } // 创建消息元素并添加到消息框容器 var messageElement = $('<div class="message"></div>').text(message).css({ 'margin-bottom': '10px' }).appendTo(ddds3); } } panel(); addMessage("\u002d\u002d\u002d\u002d\u6b63\u5728\u542f\u52a8\uff0c\u8bf7\u7a0d\u540e\u002e\u002e\u002e\u002d\u002d\u002d\u002d"); })();