JavaScript——易班优课YOOC课群在线测试自动答题解决方案(十六)利用PC端和移动端BUG
前文
JavaScript——易班优课YOOC课群在线测试自动答题解决方案(一)答案获取
Spring Boot——易班优课YOOC课群在线测试自动答题解决方案(二)答案储存
Spring Boot——易班优课YOOC课群在线测试自动答题解决方案(三)答案查询
JavaScript——易班优课YOOC课群在线测试自动答题解决方案(四)答案显示
JavaScript——易班优课YOOC课群在线测试自动答题解决方案(五)简单脚本
Spring Boot——易班优课YOOC课群在线测试自动答题解决方案(六)后端改造
JavaScript——易班优课YOOC课群在线测试自动答题解决方案(七)随机答案
JavaScript——易班优课YOOC课群在线测试自动答题解决方案(八)功能面板
JavaScript——易班优课YOOC课群在线测试自动答题解决方案(九)ID标签
Vue + Element UI + Spring Boot——易班优课YOOC课群在线测试自动答题解决方案(十)问题管理页面
JavaScript——易班优课YOOC课群在线测试自动答题解决方案(十一)恢复右键、选择和复制
JavaScript——易班优课YOOC课群在线测试自动答题解决方案(十二)脚本整合
JavaScript——易班优课YOOC课群在线测试自动答题解决方案(十三)自动答题
JavaScript——易班优课YOOC课群在线测试自动答题解决方案(十四)自动刷题
JavaScript——易班优课YOOC课群在线测试自动答题解决方案(十五)整合升级+引入jQuery
问题分析
当开始一次考试以后,同时访问PC端和移动端的考试页面,会发现试题相同。
eg:https://www.yooc.me/group/34355/exam/76495/detail

eg:https://www.yooc.me/mobile/group/34355/exams/76495/subject

并且移动端可以直接查看答案。
eg:https://www.yooc.me/mobile/group/34355/exams/76495/subject?view_type=result

答案数据

解决方案
//获取考试信息var group=document.getElementById('group-data')var groupId=group.getAttribute("data-group-id")var examId=group.getAttribute("data-exam-id")var examQuestionNum=Number(group.getAttribute("data-questions"))//获取问题信息var questions=document.getElementsByClassName('question-board')var questionNum = questions.length//获取答案信息var ansElements = document.getElementsByClassName('the-ans')var ansNum = ansElements.lengthvar writeAnswer=(question)=>{let ansEle=question.getElementsByClassName(('the-ans'))[0]let pattern=/\u6b63\u786e\u7b54\u6848\uff1a(.*)/let ans=ansEle.children[0].innerText.trim()if(pattern.test(ans)){var answers=pattern.exec(ans)[1]let question_id=question.id.split('-')[1]let answers_arr=answers.split('、')answers_arr.forEach(answer=>{if(/[A-Z]/.test(answer)){let li_Eles=question.getElementsByTagName('li')let li_Ele=li_Eles[answer.charCodeAt(0)-65]let input_id=li_Ele.dataset.questionName+"_"+li_Ele.dataset.questionValuelet Ele=document.getElementById(input_id)if(Ele.type==="radio"){Ele.checked=true;}else if(Ele.type==="checkbox"){Ele.checked=true;}//页面方法choiceAnswerData($(document.getElementById('question-'+question_id)))}else{let input_name=question_id+"_" + (answers_arr.indexOf(answer) + 1)let Ele=$("[name='"+input_name+"']").get(0)if(Ele){Ele.value=answer.split('|')[0]//页面方法inputAnswerData($(document.getElementById('question-'+question_id)))}}})let questionTag=document.getElementById(question_id)questionTag.classList.add('done')} }var copyMobileAnswer=()=>{//获取问题信息questions=$('.question-board')var questionContainer=document.getElementsByClassName('exam-detial-container')[0]console.log(questionContainer)$.ajax({type : "GET",url:"https://www.yooc.me/mobile/group/"+groupId+"/exams/"+examId+"/subject?view_type=result",}).then(res=>{let data=JSON.parse(/var data=(.*);\n/.exec(res)[1])let num=0data.forEach(e=>{console.log(e[2]);e[2].forEach(q=>{let question=document.createElement('div')question.innerHTML=q.questionquestion.classList.add('question-board')question.id=questions.get(num).idconsole.log(question)writeAnswer(question)question.id = 'answer-' + question.id.split('-')[1]questionContainer.insertBefore(question,questions.get(num++))console.log(num)})})})}copyMobileAnswer()
运行结果


备注
此BUG自2020.8开始被修复
参考文章
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

