Greasy Fork

Greasy Fork is available in English.

Mutx163学习通自动评教

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

目前为 2024-03-28 提交的版本。查看 最新版本

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

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

    // 使用轮询方式等待元素加载
    function waitForElement(selector, callback) {
        const interval = setInterval(function() {
            const elements = document.querySelectorAll(selector);
            if (elements.length) {
                clearInterval(interval);
                callback(elements);
            }
        }, 100); // 每100毫秒检查一次
    }

    // 查找所有标记为5分的<input type="radio">元素并模拟点击
    waitForElement('input.inputvalue.reselect[score="5.0"]', function(options) {
        options.forEach(option => {
            const clickEvent = new MouseEvent('click', {
                bubbles: true,
                cancelable: true,
                view: window
            });
            option.dispatchEvent(clickEvent);
        });

        // 在所有5分选项被点击之后,查找<textarea>元素并填入“无”
        waitForElement('textarea.blueTextarea', function(textareas) {
            const textarea = textareas[0]; // 假设只有一个<textarea>
            textarea.value = '无';
            // 触发keyup事件以模拟用户输入
            const keyupEvent = new Event('keyup', {
                bubbles: true,
                cancelable: true
            });
            textarea.dispatchEvent(keyupEvent);

            // 在<textarea>处理完成后,延迟点击提交按钮
            setTimeout(() => {
                waitForElement('a[onclick="save(2);"]', function(submitButtons) {
                    const submitButton = submitButtons[0]; // 假设只有一个提交按钮
                    const clickEvent = new MouseEvent('click', {
                        bubbles: true,
                        cancelable: true,
                        view: window
                    });
                    submitButton.dispatchEvent(clickEvent);
                    console.log('提交按钮已模拟点击。');

                    // 延迟点击弹窗中的“确定”按钮,以确保弹窗已经出现
                    setTimeout(() => {
                        waitForElement('.layui-layer-btn0', function(confirmButtons) {
                            const confirmButton = confirmButtons[0]; // 假设只有一个“确定”按钮
                            const clickEvent = new MouseEvent('click', {
                                bubbles: true,
                                cancelable: true,
                                view: window
                            });
                            confirmButton.dispatchEvent(clickEvent);
                            console.log('弹窗中的“确定”按钮已模拟点击。');
                        });
                    }, 1000); // 根据弹窗出现的实际延迟调整这个时间
                });
            }, 500); // 延迟500毫秒以确保<textarea>的值被正确设置和处理
        });
    });
};