Greasy Fork

Greasy Fork is available in English.

正保会计网校(原中华会计网校)继续教育自动答题2024修复版

正保会计网校(原中华会计网校)继续教育自动答题

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Userscripts ,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name               正保会计网校(原中华会计网校)继续教育自动答题2024修复版
// @version            2024.04.23.002
// @description        正保会计网校(原中华会计网校)继续教育自动答题
// @author             Herohub
// @match              https://jxjy.chinaacc.com/courseware/*
// @grant              none
// @license            MIT
// @namespace https://github.com/LazyBug1E0CF
// ==/UserScript==

(function() {
    'use strict';

    let answerRegex = /(?<=正确答案:)[\w对错]+(?=。)/;

    let answerDict = {
        "对": "Y",
        "错": "N",
        "A": "A",
        "B": "B",
        "C": "C",
        "D": "D",
        "E": "E",
        "F": "F"
    };

    setInterval(() => {
        if (isTesting()) {
            // 先直接提交答案,以便得到正确答案
            doAnswer();

            let answerTipDiv = document.querySelector("#PointQuestionAnswer0");
            while(answerTipDiv.innerHTML === "") {
                console.log("等待正确答案中。。。");
            }
            let correctAnswer = getCorrectAnswer();
            fillRightAnswer(correctAnswer);
            clearAnswerDiv();
            doAnswer();
        }
    }, 1000);

    // 答题弹窗
    let testDiv = document.querySelector("div#videoPoint");

    // 检查是否在进行答题
    let isTesting = function() {
        return "none" != testDiv.style.display;
    };

    // 提交答案
    let doAnswer = function() {
        // 答题按钮
        let answerBtn = document.querySelector("input[name='btn']");
        answerBtn.click();
    };

    // 取得正确答案
    let getCorrectAnswer = function() {
        let answerText = document.querySelector("#PointQuestionAnswer0").innerText;
        let match = answerText.match(answerRegex);
        if (match) {
            return match[0];
        }
    };

    // 选择正确答案
    let fillRightAnswer = function(answerString) {
        let answers = answerString.split("");
        for (let answer of answers) {
            let answerValue = answerDict[answer.toUpperCase()];
            document.querySelector("input[name='useranswer0'][value='" + answerValue + "']").checked = true;
        }
    };

    // 延迟5秒关闭答题弹窗
    let closeBtn = document.querySelector("a#closePointId");
    setTimeout(function() {
        closeBtn.click();
    }, 5000);

    // 设置一个变量来存储关闭按钮的引用
    let closeBtnX;

    // 定时检查关闭按钮是否存在
    setInterval(function() {
    // 尝试获取关闭按钮的DOM元素
    closeBtnX = document.querySelector("a#closePointId");
    // 如果找到了关闭按钮
    if (closeBtnX) {
    // 设置10秒后自动点击关闭按钮
        setTimeout(function() {
            if (closeBtnX && closeBtnX.click) {
                closeBtnX.click();
            }
        }, 10000); // 10秒(10000毫秒)后执行点击操作

      // 清除定时器,避免重复设置
        clearInterval(this);
    }
    }, 1000); // 每秒检查一次

    // 清空答案提示
    let clearAnswerDiv = function() {
        document.querySelector("#PointQuestionAnswer").innerHTML = "";
    };
})();