前文

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课群在线测试自动答题解决方案(十一)恢复右键、选择和复制

解决方案

// ==UserScript==
// @name         YOOC Exam Detail
// @namespace    http://tampermonkey.net/
// @version      0.2
// @description  try to take over the world!
// @author       STZG
// @match        https://www.yooc.me/group/*/exam/*/detail
// @grant        none
// ==/UserScript==(function() {'use strict';// Your code here...
var examUpload=()=>{var xmlhttp = new XMLHttpRequest();//获取对象xmlhttp.onreadystatechange = function(){//设置回调函数if(xmlhttp.readyState == 4){//这里的4是请求的状态码,代表请求已经完成if(xmlhttp.status == 200 || xmlhttp.status == 304){//这里是获得响应的状态码,200代表成功,304代表无修改可以直接从缓存中读取console.log(xmlhttp);//创建DOMvar html=document.createElement("html");html.innerHTML=xmlhttp.responseTextconsole.log(html)//获取考试信息var group=document.getElementById('group-data')var groupId=group.getAttribute("data-group-id")var examId=group.getAttribute("data-exam-id")//获取问题信息var question=Array.from(html.getElementsByClassName('question-board'))console.log(question)//数据封装var question_arr=[]question.forEach(q=>{question_arr.push({id:q.id,question:q.outerHTML.replace(/the-ans fls/g,"the-ans crt").replace(/<li class="crt"/g,'<li class=""').replace(/<li class="fls"/g,'<li class=""')})document.getElementById(q.id).getElementsByClassName('the-ans')[0].innerHTML=q.getElementsByClassName('the-ans')[0].innerHTML    })//上传服务器var posthttp = new XMLHttpRequest();//获取对象posthttp.onreadystatechange = function(){//设置回调函数if(posthttp.readyState == 4){//这里的4是请求的状态码,代表请求已经完成if(posthttp.status == 200 || posthttp.status == 304){//这里是获得响应的状态码,200代表成功,304代表无修改可以直接从缓存中读取var result = posthttp.responseText;//这里获取的是响应文本,也可以获得响应xml或JSONconsole.log(result)}}}posthttp.open("POST","https://locahost/group/"+groupId+"/exam/"+examId+"/upload");//JSON Headerposthttp.setRequestHeader("Content-Type","application/json");posthttp.setRequestHeader("Content-Security-Policy","upgrade-insecure-requests");//解析为JSONposthttp.send(JSON.stringify(question_arr));//POST请求}}}xmlhttp.open("GET",document.URL);xmlhttp.send();//GET请求
}
var answer=()=>{//获取考试信息var group=document.getElementById('group-data')var groupId=group.getAttribute("data-group-id")var examId=group.getAttribute("data-exam-id")//获取问题信息questions=document.getElementsByClassName('question-board')var question_arr=[]Array.from(questions).forEach(q=>{question_arr.push(q.id.substr(9))})var xmlhttp = new XMLHttpRequest();//获取对象xmlhttp.onreadystatechange = function(){//设置回调函数if(xmlhttp.readyState == 4){//这里的4是请求的状态码,代表请求已经完成if(xmlhttp.status == 200 || xmlhttp.status == 304){//这里是获得响应的状态码,200代表成功,304代表无修改可以直接从缓存中读取var result = xmlhttp.responseText;//这里获取的是响应文本,也可以获得响应xml或JSONconsole.log(result)//解析为JS对象var obj = JSON.parse(result);var questionContainer=document.getElementsByClassName('exam-detial-container')[0]obj.forEach(q=>{var question=document.getElementById('question-'+q.id)var answer = document.createElement("div");answer.innerHTML = q.question;var child=answer.childNodes[0]child.id='answer-'+q.idquestionContainer.insertBefore(child,question)console.log(question)console.log(answer)})addIdTag()}}}xmlhttp.open("GET","https://locahost/group/yooc/group/"+groupId+"/exam/"+examId+"/answer?question="+question_arr);xmlhttp.send();//GET请求
}
var nullSubmit=()=>{//获取问题信息var question=Array.from(document.getElementsByClassName('question-board'))question.forEach(q=>{console.log(q)let inputTag=q.getElementsByTagName('input')console.log(inputTag)if(inputTag.length>0){let Ele=inputTag[0]if(Ele.type==="radio"||Ele.type==="checkbox"){if(Ele.type==="radio"){Ele.checked=true;}else if(Ele.type==="checkbox"){Ele.checked=true;}//页面方法choiceAnswerData($(q))}else if(Ele.type==="text"){let Eles=Array.from(inputTag)Eles.forEach(e=>{e.value="test"})//页面方法inputAnswerData($(q))}let ele_name=Ele.name.replace(/\_[0-9]+/, '')let questionTag=document.getElementById(ele_name)questionTag.classList.add('done')}})
}
var appendsomething=()=>{var releaseButtun=document.getElementsByClassName('release-board')[0]var ns=document.createElement('a')ns.id="null-submit"ns.href="javascript:;"ns.innerText="提交白卷"ns.style="margin-left: 0px;margin-top: 10px;"ns.title="随机答案提交试卷"ns.onclick=()=>{nullSubmit()//页面方法xAlert('提示','随机答案选择完毕,可以提交了')}releaseButtun.appendChild(ns)var qa=document.createElement('a')qa.id="query-answer"qa.href="javascript:;"qa.innerText="查询答案"qa.style="margin-left: 20px;margin-top: 10px;"qa.title="云端题库查询答案"qa.onclick=()=>{var ansElements = document.getElementsByClassName('the-ans')var ansNum = ansElements.lengthif(ansNum<0){answer()}else{//页面方法xAlert('失败','已经有答案了哦')}}releaseButtun.appendChild(qa)
}
var addIdTag=()=>{//获取问题信息var question=Array.from(document.getElementsByClassName('question-board'))question.forEach(q=>{let board_type=q.id.split('-')[0]let question_id=q.id.split('-')[1]let idTag=q.getElementsByClassName('question-id-tag')if(idTag.length===0){idTag=document.createElement('span')idTag.classList.add('question-id-tag')q.children[0].appendChild(idTag)}if(board_type==='question'){idTag.innerHTML=" 题目ID:"+question_id}else if(board_type==='answer'){idTag.innerHTML=" 答案ID:"+question_id}})
}
var unblock=()=>{//选择document.onselectstart= function(e){var e = e || window.event;e.returnValue = true;return true;}//鼠标按下document.onmousedown = function(e) {var e = e || window.event;e.returnValue = true;return true;}//鼠标右键菜单document.oncontextmenu = function(e) {var e = e || window.event;e.returnValue = true;return true;}window.onkeydown = function(e) {//Ctrl+S 保存if (e.ctrlKey && e.keyCode == 83) {e.returnValue = true;return true;}//Ctrl+P 打印if (e.ctrlKey && e.keyCode == 80) {e.returnValue = true;return true;}//Ctrl+C 复制if (e.ctrlKey && e.keyCode == 67) {e.returnValue = true;return true;}}
}
//获取考试信息
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.lengthif(ansNum>0){if(questionNum===examQuestionNum){examUpload()}else{console.log("现在是考试中,不能上传答案哦。")}
}else{answer()appendsomething()unblock()
}
addIdTag()})();

JavaScript——易班优课YOOC课群在线测试自动答题解决方案(十二)脚本整合相关推荐

  1. JavaScript——易班优课YOOC课群在线测试自动答题解决方案(十九)强制重做

    前文 JavaScript--易班优课YOOC课群在线测试自动答题解决方案(一)答案获取 Spring Boot--易班优课YOOC课群在线测试自动答题解决方案(二)答案储存 Spring Boot- ...

  2. JavaScript + Thymeleaf + Spring Boot——易班优课YOOC课群在线测试自动答题解决方案(十八)模板脚本

    前文 JavaScript--易班优课YOOC课群在线测试自动答题解决方案(一)答案获取 Spring Boot--易班优课YOOC课群在线测试自动答题解决方案(二)答案储存 Spring Boot- ...

  3. JavaScript——易班优课YOOC课群在线测试自动答题解决方案(十六)利用PC端和移动端BUG

    前文 JavaScript--易班优课YOOC课群在线测试自动答题解决方案(一)答案获取 Spring Boot--易班优课YOOC课群在线测试自动答题解决方案(二)答案储存 Spring Boot- ...

  4. JavaScript——易班优课YOOC课群在线测试自动答题解决方案(十五)整合升级+引入jQuery

    前文 JavaScript--易班优课YOOC课群在线测试自动答题解决方案(一)答案获取 Spring Boot--易班优课YOOC课群在线测试自动答题解决方案(二)答案储存 Spring Boot- ...

  5. JavaScript——易班优课YOOC课群在线测试自动答题解决方案(十四)自动刷题

    前文 JavaScript--易班优课YOOC课群在线测试自动答题解决方案(一)答案获取 Spring Boot--易班优课YOOC课群在线测试自动答题解决方案(二)答案储存 Spring Boot- ...

  6. Vue + Element UI + Spring Boot——易班优课YOOC课群在线测试自动答题解决方案(十)问题管理页面

    前文 JavaScript--易班优课YOOC课群在线测试自动答题解决方案(一)答案获取 Spring Boot--易班优课YOOC课群在线测试自动答题解决方案(二)答案储存 Spring Boot- ...

  7. JavaScript + Tampermonkey——易班优课YOOC课群在线测试自动答题解决方案(十七)复合型解决方案油猴脚本

    前文 JavaScript--易班优课YOOC课群在线测试自动答题解决方案(一)答案获取 Spring Boot--易班优课YOOC课群在线测试自动答题解决方案(二)答案储存 Spring Boot- ...

  8. JavaScript——易班优课YOOC课群在线测试自动答题解决方案(十三)自动答题

    前文 JavaScript--易班优课YOOC课群在线测试自动答题解决方案(一)答案获取 Spring Boot--易班优课YOOC课群在线测试自动答题解决方案(二)答案储存 Spring Boot- ...

  9. Web安全——易班优课YOOC课群在线测试自动答题解决方案

    基本概念 易班优课YOOC:优课YOOC"是易班网于2016年4月研发并推出的基于Social Learning的理念而开发的在线学习平台. 官方网站:https://www.yooc.me ...

最新文章

  1. 什么是 Webhook?
  2. 还在用Tensorboard?机器学习实验管理平台大盘点
  3. Hibernate 添加数据 二 (多对多)
  4. [Codeforces 487E]Tourists
  5. xy的跨浏览器在线编辑器超级简易版
  6. nginx sendfile
  7. OpenGL超级宝典(第7版)之VS2019使用sb7框架搭建自己的程序
  8. SwiftyJSON解析本地JSON文件
  9. android应用流程图,Android APP 启动流程简析
  10. jsoncpp操作类
  11. 【视频分享】尚学堂---数据结构和算法
  12. 灵活高效可支撑复杂业务系统的BPM平台
  13. 为什么有的大厂,变量不能直接赋值undefined?
  14. 微观机器人会使用激光脉冲穿过人体
  15. JavaScript放大镜插件magnifier实现图像放大效果
  16. ROS2机器人坐标工具→tf2静态广播←Python
  17. 简单一招破解网站内容不能复制+图片不能右击(naver blog有效)
  18. vue axios在开发中遇到的问题
  19. 做设计想要轻松接单 你要懂这些
  20. java视频点播系统_jsp教学视频点播系统

热门文章

  1. 指针津逮--------浅谈从指针到“ref”
  2. dods 机器人_胜利之日机器人补丁
  3. R星服务器修改声望,从《荒野大镖客2》Online更新,我们可以看出R星的新思路
  4. python os sys_python os模块sys模块常用方法
  5. java 继承 私有变量_java – 继承和私有变量
  6. java hibernate sqlserver自增_怎样在hibernate中实现oracle的主键自增策略?
  7. android调用webservice传参数,android调用webservice接口获取信息
  8. docker 镜像修改的配置文件自动还原_Docker 基础与实战,看这一篇就够了
  9. 分布式内存数据库---Redis的持久化
  10. 近几年,关于基于Imagenet数据集图像分类的模型总结