Greasy Fork

Greasy Fork is available in English.

青书学堂

青书学堂作业自动填写选择题

目前为 2022-06-06 提交的版本,查看 最新版本

// ==UserScript==
// @name         青书学堂
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  青书学堂作业自动填写选择题
// @author       kokusan
// @match        *://*.qingshuxuetang.com/hngd/Student/ExercisePaper*
// @icon         data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==
// @grant        none
// @license MIT
// ==/UserScript==


var answerPageUrl;
(function() {
    'use strict';

    // 创建一个iframe用来加载答案页面
    var pageUrl = window.location.search;

    // 青书学堂答案就在下面这个地址中
    answerPageUrl = 'https://degree.qingshuxuetang.com/hngd/Student/ViewExerciseAnswer' + pageUrl;


    var iframe = document.createElement('iframe');
    document.body.appendChild(iframe);
    iframe.style.display = 'none';
    iframe.src = answerPageUrl;

    // 初始化所有选项
    $('#form1 > div.question-entity input[type="checkbox"]').prop('checked', false);

    listenerIframe(iframe);

})();

var answer;

// 监听创建的答案iframe是否加载完毕
function listenerIframe(iframe) {
    var iframeLoad = function () {
        window.setTimeout(function() {
            console.log("加载完毕")

            // iframe加载完毕后获取所有问题的答案存进answer中
            var an = [];
            $(iframe.contentDocument).find('#form1 > div > div:nth-child(4) > span.fe855a').each(function(i) {
                an.push({"index":i, "value":$(this).html()})
            });
            console.log('成功获取答案数量:' + an.length);
            console.log(an)
            answer = an;
            writeInAnswerFun();

        }, 500);

        // 移除监听器
        iframe.removeEventListener("load", iframeLoad, true);
    };
    iframe.addEventListener('load', iframeLoad, true);
}

// 把答案写入到试卷中
function writeInAnswerFun() {
    if (!answer) {
        alert("未成功获取答案,请刷新页面重试!");
        return;
    }

    // 下面时成功获取答案后该进行的操作
    var errNumber = [];
    answer.forEach(function(item) {
        try {
            var value = item.value;
            for (let i in value) {
                $('#form1 > div.test_q_' + item.index + '_ input[value="' + value[i] + '"]').prop('checked','checked');
            }
        } catch(e) {
            try {
                errNumber.push(item.index + 1)
            } catch(e2){}
        }
    });

    if (errNumber.length > 0) {
        alert('第' + errNumber.join(',') + '题答案录入失败!')
    }

    lastFun();

}

function lastFun() {
    alert('自动填入答案程序执行完毕。')

    if($('#form1 > div.question-entity[questiontype="3"]').length > 0) {
        window.open(answerPageUrl, "_blank");
    }
}