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

前文

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);
                //创建DOM
                var html=document.createElement("html");
                html.innerHTML=xmlhttp.responseText
                console.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或JSON
                            console.log(result)
                        }
                    }
                }
                posthttp.open("POST","https://locahost/group/"+groupId+"/exam/"+examId+"/upload");
                //JSON Header
                posthttp.setRequestHeader("Content-Type","application/json");
                posthttp.setRequestHeader("Content-Security-Policy","upgrade-insecure-requests");
                //解析为JSON
                posthttp.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或JSON
                console.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.id
                    questionContainer.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.length
        if(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.length

if(ansNum>0){
    if(questionNum===examQuestionNum){
        examUpload()
    }else{
        console.log("现在是考试中,不能上传答案哦。")
    }
}else{
    answer()
    appendsomething()
    unblock()
}
addIdTag()

})();

 

已标记关键词 清除标记
手把手讲授如何搭建成功OpenVINO框架,并且使用预训练模型快速开发超分辨率、道路分割、汽车识别、人脸识别、人体姿态和行人车辆分析。得益于OpenVINO框架的强大能力,这些例子都能够基于CPU达到实时帧率。 程的亮点在于在调通Demo的基础上更进一步:一是在讲Demo的时候,对相关领域问题进行分析(比如介绍什么是超分辨率,有什么作用)、预训练模型的来龙去脉(来自那篇论文,用什么训练的)、如何去查看不同模型的输入输出参数、如何编写对应的接口参数进行详细讲解;二是基本上对所有的代码进行重构,也就是能够让例子独立出来,并且给出了带有较详细注释的代码;三是注重实际运用,将Demo进一步和实时视频处理框架融合,形成能够独立运行的程序,方便模型落地部署;四是重难点突出、注重总结归纳,对OpenVINO基本框架,特别是能够提高视频处理速度的异步机制和能够直接部署解决实际问题的骨骼模型着重讲解,帮助学习理解;五是整个程准备精细,每一都避免千篇一律,前一有对后一的预告,后一有对前一的难点回顾,避免学习过程中出现突兀;六是在适当的时候拓展衍生,不仅讲OpenVINO解决图像处理问题,而且还补充图像处理的软硬选择、如何在手机上开发图像处理程序等内容,帮助拓展视野,增强对行业现状的了解。 基本提纲: 1、程综述、环境配置 2、OpenVINO范例-超分辨率(super_resolution_demo) 3、OpenVINO范例-道路分割(segmentation_demo) 4、OpenVINO范例-汽车识别(security_barrier_camera_demo) 5、OpenVINO范例-人脸识别(interactive_face_detection_demo) 6、OpenVINO范例-人体姿态分析(human_pose_estimation_demo) 7、OpenVINO范例-行人车辆分析(pedestrian_tracker_demo) 8、NCS和GOMFCTEMPLATE 9、程小结,资源分享
©️2020 CSDN 皮肤主题: 1024 设计师:上身试试 返回首页