自动评教,点击开始按钮即可执行评教操作。
// ==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 });
})();