又到了学期末,想必评教是每年的保留节目了(消息服务A:您有新的评教问卷*infinity)。

一般情况下,大部分老师真的没有什么不好的地方,也就是大部分老师我们的评价都会给到满意。但是这大量重复的操作真的非常麻烦。就让我们不由得想到:能不能写一个Javascript脚本来解决这个问题?

同时我们知道,西电的一站式等网站都有禁F12等反调试限制,那么油猴脚本就是最省事的最简单的解决办法。

Chrome/Edge浏览器下载插件

以谷歌浏览器举例:可以在以下网站下载插件(谷歌商店需要魔法上网)。

如果你使用的是 Edge 浏览器,可以直接在自带的 Edge 扩展商店(Add-ons)中搜索安装,无需魔法。

然后搜索“油猴”、“篡改猴”或“Tampermonkey”等关键词,就可以下载插件:

alt text

添加脚本

下载好插件后,点击插件:

alt text

点击添加新脚本:

alt text

删去原本的所有内容(Ctrl+A全选删去)

alt text

复制以下脚本:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
// ==UserScript==
// @name 西电教务自动评教助手
// @namespace http://tampermonkey.net/
// @version 1.0
// @description 自动选择非常满意并填写评语“无”
// @author fifker
// @match *://ehall.xidian.edu.cn/jwapp/sys/wspjyyapp/*
// @grant none
// @run-at document-end
// ==/UserScript==

(function() {
'use strict';

// 使用定时器等待页面元素加载完毕
const timer = setInterval(() => {
const scoreOptions = document.querySelectorAll('[data-x-bl="100"]');
const textareas = document.querySelectorAll('.bh-txt-input__txtarea');
const saveBtn = document.querySelector('[data-action="保存"]');

// 确保页面上的核心元素都已加载
if (scoreOptions.length > 0 && textareas.length > 0 && saveBtn) {
clearInterval(timer); // 停止监听
console.log('检测到评教元素,开始自动填写...');

// 1. 批量点击“非常满意”
scoreOptions.forEach(e => e.click());

// 2. 批量填写评语,并手动触发 input 事件确保前端框架捕捉到修改
textareas.forEach(e => {
e.value = '无';
// 触发输入事件,防止框架拦截
e.dispatchEvent(new Event('input', { bubbles: true }));
e.dispatchEvent(new Event('change', { bubbles: true }));
});

// 3. 延迟一小会儿执行保存,给系统一个缓冲时间,避免操作过快被拦截
setTimeout(() => {
console.log('自动填写完成,正在保存...');
saveBtn.click();
}, 500);
}
}, 1000); // 每隔 1 秒检测一次页面
})();

添加完脚本后记得保存(如使用 Ctrl + S)。

最后一步,在浏览器插件的管理页面,找到篡改猴的详细内容,选择允许用户运行脚本:

alt text

打开脚本,插件就会在你进入评教页面的时候自动注入评教数据。

注意:进入后需要刷新重进,若是一次没有成功就重复以上操作。

alt text

就可以自动完成评教了!如果有需要,单独老师再手动修改。

其他学校

对于其他的学校,你可能需要修改以下部分以适配你们学校的教务系统:

  1. 匹配网址 (@match):最重要的部分!将脚本头部的 @match *://ehall.xidian.edu.cn/jwapp/sys/wspjyyapp/* 替换为你们学校评教网页的 URL,支持使用通配符 *
  2. 分数选项的选择器:脚本中的 document.querySelectorAll('[data-x-bl="100"]') 是定位“非常满意”按钮的。你需要按下 F12 审查页面元素,根据你们学校网页的具体结构,把 [data-x-bl="100"] 替换成对应的标签属性或 Class。
  3. 评语框的选择器:同理,修改 document.querySelectorAll('.bh-txt-input__txtarea'),替换为你们学校评语输入框的对应选择器。
  4. 保存/提交按钮的选择器:将 document.querySelector('[data-action="保存"]') 替换为实际提交按钮的代码规则。

根据以上几点找出你们系统上的关键元素,并在代码中相应替换后,这个脚本就同样适用于你的学校了!

如果在修改中遇到无法响应的问题,可以检查下针对不同前端框架的事件触发(即代码中的 dispatchEvent 模拟输入触发部分)是否有其他更深层的校验限制。