Greasy Fork

Greasy Fork is available in English.

Mutx163学习通自动评教

学习通自动评价,默认满分

当前为 2024-07-07 提交的版本,查看 最新版本

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

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

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

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

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

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

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

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

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

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

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

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

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

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

// ==UserScript==
// @name         Mutx163学习通自动评教
// @namespace    http://tampermonkey.net/
// @version      v1.21
// @description  学习通自动评价,默认满分
// @author       Mutx163
// @match        https://newes.chaoxing.com/newesMobile/*
// @icon
// @license MIT
// @grant        none
// ==/UserScript==
//默认开启了自动提交,把不喜欢的话自动提交下面的那行代码注释掉即可


window.onload = function() {
    'use strict';

    // 创建一个按钮用于控制自动评教
    const autoEvaluateButton = document.createElement('button');
    autoEvaluateButton.textContent = '启动自动评教';
    autoEvaluateButton.style.position = 'fixed';
    autoEvaluateButton.style.top = '10px';
    autoEvaluateButton.style.right = '10px';
    autoEvaluateButton.style.zIndex = '1000';
    document.body.appendChild(autoEvaluateButton);

    // 检查localStorage中的状态
    const autoEvaluateEnabled = localStorage.getItem('autoEvaluateEnabled') === 'true';

    // 根据存储的状态更新按钮文本
    autoEvaluateButton.textContent = autoEvaluateEnabled ? '禁用自动评教' : '启动自动评教';

    autoEvaluateButton.addEventListener('click', function() {
        const isEnabled = localStorage.getItem('autoEvaluateEnabled') === 'true';
        localStorage.setItem('autoEvaluateEnabled', !isEnabled);
        autoEvaluateButton.textContent = !isEnabled ? '禁用自动评教' : '启动自动评教';

        if (!isEnabled) {
            startAutoEvaluation();
        }
    });

    // 如果已启用,自动开始评教
    if (autoEvaluateEnabled) {
        startAutoEvaluation();
    }
};

function startAutoEvaluation() {
    setTimeout(() => {
        // 查找所有标记为5分的<i>元素并模拟点击
        const options = document.querySelectorAll('i.inputvalue.reselect1[score="5.0"]');
        if (options.length > 0) {
            options.forEach(option => {
                const clickEvent = new MouseEvent('click', {
                    bubbles: true,
                    cancelable: true,
                    view: window
                });
                option.dispatchEvent(clickEvent);
            });
            console.log('已找到并点击所有5分选项。');
        } else {
            console.error('未找到5分选项按钮。');
        }

        // 查找<textarea>元素并填入“无”
        const textarea = document.querySelector('textarea.InputBox_fidarea');
        if (textarea) {
            textarea.value = '无';
            const keyupEvent = new Event('keyup', {
                bubbles: true,
                cancelable: true
            });
            textarea.dispatchEvent(keyupEvent);
        } else {
            console.error('未找到文本输入区域。');
        }

        // 延迟点击提交按钮,确保前面的操作已完成
        setTimeout(() => {
            const submitButton = document.querySelector('a[onclick="save(2);"]');
            if (submitButton) {
                const clickEvent = new MouseEvent('click', {
                    bubbles: true,
                    cancelable: true,
                    view: window
                });
                submitButton.dispatchEvent(clickEvent);
                console.log('提交按钮已模拟点击。');

                // 延迟点击弹窗中的“确定”按钮,以确保弹窗已经出现
                setTimeout(() => {
                    const confirmButton = document.querySelector('li.cx_alert-blue');
                    if (confirmButton) {
                        const clickEvent = new MouseEvent('click', {
                            bubbles: true,
                            cancelable: true,
                            view: window
                        });
                        confirmButton.dispatchEvent(clickEvent);
                        console.log('弹窗中的“确定”按钮已模拟点击。');
                    } else {
                        console.error('弹窗中的“确定”按钮未找到。');
                    }
                }, 1000); // 根据弹窗出现的实际延迟调整这个时间
            } else {
                console.error('提交按钮未找到,需要手动提交或检查选择器。');
            }
        }, 500); // 延迟500毫秒以确保<textarea>的值被正确设置和处理
    }, 1000); // 延迟1秒执行,根据实际加载时间调整
}