您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
自动评教,点击开始按钮即可执行评教操作。
// ==UserScript== // @name 武汉大学教务系统自动评教-Teaching Evaluation For WHU // @namespace plusv // @version 1.1 // @description 自动评教,点击开始按钮即可执行评教操作。 // @match https://ugsqs.whu.edu.cn/new/student/rank/* // @grant none // @license MIT // ==/UserScript== (function() { 'use strict'; // 创建开始按钮 const startBtn = document.createElement('button'); startBtn.textContent = '任意键评教'; startBtn.style.position = 'fixed'; startBtn.style.zIndex = 114514; startBtn.style.top = '50%'; startBtn.style.left = '50%'; startBtn.style.transform = 'translate(-50%, -50%)'; startBtn.style.backgroundColor = '#01aba0'; startBtn.style.border = 'none'; startBtn.style.borderRadius = '4px'; startBtn.style.color = '#fff'; startBtn.style.fontSize = '16px'; startBtn.style.fontWeight = 'bold'; startBtn.style.padding = '12px 24px'; startBtn.style.cursor = 'pointer'; startBtn.style.transition = 'all 0.3s ease'; startBtn.style.boxShadow = '0px 2px 6px rgba(0, 0, 0, 0.3)'; // 添加阴影效果 // 添加圆角 startBtn.style.webkitBorderRadius = '10px'; startBtn.style.mozBorderRadius = '10px'; startBtn.style.borderRadius = '10px'; document.body.appendChild(startBtn); // 点击开始按钮执行评教操作 startBtn.addEventListener('click', async function() { // 获取所有单选题的元素 const questions = document.querySelectorAll('.dxt'); // 遍历每个单选题 questions.forEach(question => { // 获取该题的所有选项元素 const options = question.querySelectorAll('input[type="radio"]') // 找到最大的选项值 let maxOption = options[0]; for (let i = 1; i < options.length; i++) { if (parseFloat(options[i].value) > parseFloat(maxOption.value)) { maxOption = options[i]; } } // 点击最大的选项 maxOption.click(); }); // 获取第一个单选题元素 const question = document.querySelector('.dxt'); // 获取该题的所有选项元素 const options = question.querySelectorAll('input[type="radio"]'); // 点击第二个选项 options[1].click(); // 获取文本框元素 const input = document.querySelector('textarea[name="2259"]'); // 设置文本框的值为"无" input.value = "无"; // 创建一个名为"input"的事件 const event = new Event('input', { bubbles: true }); // 触发文本框的"input"事件 input.dispatchEvent(event); // 获取提交按钮元素 const submitBtn = document.getElementById('pjsubmit'); // 点击提交按钮 submitBtn.click(); // 等待1秒钟 await new Promise(resolve => setTimeout(resolve, 100)); // 在这里执行等待1秒后需要执行的代码 // 获取关闭按钮元素 const closeBtn = document.querySelector('#finishDlg button[data-dismiss="modal"]'); // 点击关闭按钮 closeBtn.click(); }); // 使用 MutationObserver 监听页面变化 const observer = new MutationObserver(mutations => { mutations.forEach(mutation => { // 如果新增节点是在 body 下,且不是 startBtn 按钮,则重新设置 startBtn 的 z-index 属性 if (mutation.addedNodes.length && mutation.addedNodes[0].parentNode === document.body && mutation.addedNodes[0] !== startBtn) { startBtn.style.zIndex = 114514; // 最高图层的 z-index 值 } }); }); // 监听键盘按下事件 window.addEventListener('keydown', function handleKeyDown(event) { // 确保用户按下的是任意键,而不是特殊键,如 shift、ctrl、alt 等 if (event.keyCode !== 16 && event.keyCode !== 17 && event.keyCode !== 18) { // 触发开始按钮的点击事件 startBtn.click(); } }); // 开始监听页面变化 observer.observe(document.body, { childList: true }); })();