Greasy Fork

Greasy Fork is available in English.

51taoshiwan智能答题助手-随机答案+弹窗处理+自动跳转

广水一中2023级出品

当前为 2025-05-22 提交的版本,查看 最新版本

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

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

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

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

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

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

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

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

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

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

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

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

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

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

// ==UserScript==
// @name         51taoshiwan智能答题助手-随机答案+弹窗处理+自动跳转
// @namespace    https://staybrowser.com/
// @version      0.3.2
// @description  广水一中2023级出品
// @author       xiaocanln & deepseek
// @match        *://*/*
// @grant        none
// ==/UserScript==
(function () {
    'use strict';
    // ==UserScript==
// @name         智能答题助手-随机答案+弹窗处理+自动跳转
// @namespace    http://tampermonkey.net/
// @version      3.2
// @description  完全随机答案选择+强化弹窗处理+自动跳转
// @author       xiaocanln & deepseek
// @match        http://infotech.51taoshi.com/*
// @grant        none
// @run-at       document-idle
// ==/UserScript==

(function() {
    'use strict';

    // 配置参数
    const TARGET_URL = 'https://infotech.51taoshi.com/hw/stu/myHomework.do';
    const REDIRECT_DELAY = 1500; // 跳转延迟时间

    // 强化随机数生成
    const getRandomOption = () => ['A', 'B', 'C', 'D'][Math.floor(Math.random()*4)];

    // 动态题量识别
    const getQuestionGroups = () => {
        const groups = new Map();
        document.querySelectorAll("input[type='radio']").forEach(radio => {
            const groupName = radio.name.replace(/_\d+$/, '');
            if (!groups.has(groupName)) {
                groups.set(groupName, []);
            }
            groups.get(groupName).push(radio);
        });
        return Array.from(groups.values());
    };

    // 精准答案选择
    const selectRandomAnswers = () => {
        const questionGroups = getQuestionGroups();
        questionGroups.forEach(group => {
            const options = group.filter(radio => radio.value.match(/^[A-D]$/));
            if (options.length > 0) {
                const selected = options[Math.floor(Math.random() * options.length)];
                selected.checked = true;
                selected.dispatchEvent(new Event('change'));
            }
        });
    };

    // 强化弹窗处理
    const handleConfirmDialog = () => {
        const confirmHandler = () => {
            const confirmBtn = [...document.querySelectorAll('.layui-layer-btn0')]
                .find(btn => btn.textContent.includes('确定'));
            if (confirmBtn) {
                confirmBtn.click();
                console.log('已确认提交');
                return true;
            }
            return false;
        };

        // 多重尝试机制
        let attempts = 0;
        const tryConfirm = () => {
            if (attempts++ < 5) {
                if (!confirmHandler()) {
                    setTimeout(tryConfirm, 300);
                }
            }
        };
        tryConfirm();
    };

    // 执行跳转
    const performRedirect = () => {
        console.log('即将跳转到作业列表页面');
        setTimeout(() => {
            window.location.href = TARGET_URL;
        }, REDIRECT_DELAY);
    };

    // 主执行流程
    setTimeout(() => {
        // 第一阶段:随机选择答案
        selectRandomAnswers();

        // 第二阶段:提交处理
        setTimeout(() => {
            const submitBtn = document.getElementById('postExamAnswer');
            if (submitBtn) {
                submitBtn.click();
                handleConfirmDialog();
                
                // 最终检查并跳转
                setTimeout(() => {
                    if (!document.querySelector('.layui-layer-btn0')) {
                        performRedirect();
                    } else {
                        location.reload(); // 弹窗仍存在则重新执行
                    }
                }, 2000);
            } else {
                performRedirect(); // 如果找不到提交按钮也跳转
            }
        }, 1000);
    }, 1500);

    // 防重复提交锁
    let isSubmitting = false;
    document.addEventListener('click', (e) => {
        if (e.target.id === 'postExamAnswer' && !isSubmitting) {
            isSubmitting = true;
            handleConfirmDialog();
        }
    });

})();

})();