好大学在线选择题答题情况查看

显示好大学在线测验与作业选择题回答情况

// ==UserScript==
// @name         好大学在线选择题答题情况查看
// @namespace    https://zby.io
// @version      0.7
// @description  显示好大学在线测验与作业选择题回答情况
// @author       fourstring
// @match        https://cnmooc.org/study/initplay/*
// @match        https://cnmooc.org/examTest/stuExamList/*
// @match        https://www.cnmooc.org/examTest/stuExamList/*
// @match        https://www.cnmooc.org/study/*
// @match        https://*.cnmooc.org/examTest/stuExamList/*
// @match        https://*.cnmooc.org/study/*
// @grant        none
// ==/UserScript==

(function() {
    'use strict';
    function createTipsNode(result){
        var tipsNode=document.createElement("span");
        if (result=="right"){
            tipsNode.innerText="[正确(结果不会即时更新,需要答题完暂存后再重新进入查看)]";
            tipsNode.style.color="green";
        }else{
            tipsNode.innerText="[错误(结果不会即时更新,需要答题完暂存后再重新进入查看)]";
            tipsNode.style.color="red";
        }
        return tipsNode;
    }
    function checkErrorFlags(){
        let problemsList=$('div.view-test.practice-item').toArray();
        for (let problem of problemsList) {
            let currentProblemId=problem.getAttribute("id");
            if ($("div#"+currentProblemId+" a.selected").toArray().length>0){
                let currentResult=problem.getAttribute("error_flag");
                let addtionalTextArea=$("div#"+currentProblemId+" div.test-attach")[0];
                addtionalTextArea.appendChild(createTipsNode(currentResult));
            }
        }

    }
    function hook(func,pre,post){
        return function(){
            if (pre) pre.apply(window,arguments);
            func.apply(window,arguments);
            if (post) post.apply(window,arguments);
        }
    }
    var checked=false;
    var intervalId=setInterval(function(){
        if (window.hasOwnProperty("examLockTips")&&(!checked)&&window.examLockTips.closed&&$("div#enterObjectExamDiv").toArray().length==0){
            checkErrorFlags();
            checked=true;
            window.doSubmitExam=hook(window.doSubmitExam,null,function(){checked=false;});
            window.doSubmitExamBack=hook(window.doSubmitExamBack,null,function(){checked=false;});
        }
    },500);
})();