Skip to content

Commit ff254f2

Browse files
authored
1.0.0
1 parent a122f9a commit ff254f2

File tree

1 file changed

+140
-0
lines changed

1 file changed

+140
-0
lines changed

user.js

Lines changed: 140 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,140 @@
1+
// ==UserScript==
2+
// @name 组卷网试卷处理下载打印
3+
// @version 1.0.0
4+
// @namespace
5+
// @description 【2024/8/3】自动处理组卷网试卷,并打印。
6+
// @author nuym
7+
// @match https://zujuan.xkw.com/zujuan
8+
// @match https://zujuan.xkw.com/*.html
9+
// @icon https://zujuan.xkw.com/favicon.ico
10+
// @grant GM_registerMenuCommand
11+
// @grant GM_notification
12+
// @homepage https://github.com/bzyzh/xkw-zujuan-script
13+
// @license GNU Affero General Public License v3.0
14+
// ==/UserScript==
15+
16+
(function() {
17+
'use strict';
18+
console.log("✅ 程序加载成功");
19+
20+
// 获取用户信息
21+
var username = document.getElementsByClassName('user-nickname')[0].innerText;
22+
var usertype = document.getElementsByClassName('user-type plus')[0].innerText;
23+
var endtime = document.getElementsByClassName('end-time')[0].innerText;
24+
25+
console.log("-----------------------------------------------");
26+
console.log("🔹版本:1.0.0");
27+
console.log("🔹作者:nuym");
28+
console.log("🔹开源地址:https://github.com/bzyzh/xkw-zujuan-script");
29+
console.log("🔹学校网站:https://www.bzyzh.com");
30+
console.log("🔹组卷网用户: %s", username);
31+
console.log("🔹组卷网等级: %s", usertype);
32+
console.log("🔹组卷网到期时间: %s", endtime);
33+
console.log("-----------------------------------------------");
34+
35+
// 去除广告
36+
var adElement = document.getElementsByClassName("aside-pop activity-btn")[0];
37+
if (adElement) {
38+
adElement.remove();
39+
console.log("✅ 去除广告成功");
40+
}
41+
42+
// 注册菜单命令以处理后自动刷新
43+
GM_registerMenuCommand("处理后自动刷新", () => {
44+
var autoRefreshStatus = localStorage.getItem("EnableAutoRefresh");
45+
if (autoRefreshStatus === 'N') {
46+
localStorage.setItem("EnableAutoRefresh", 'Y');
47+
GM_notification("处理后自动刷新:已开启");
48+
} else {
49+
localStorage.setItem("EnableAutoRefresh", 'N');
50+
GM_notification("处理后自动刷新:已关闭");
51+
}
52+
});
53+
54+
// 初始化处理后自动刷新状态
55+
if (localStorage.getItem("EnableAutoRefresh") == null) {
56+
localStorage.setItem("EnableAutoRefresh", 'Y');
57+
}
58+
59+
console.log("🔹 创建按钮对象...");
60+
var printButton = document.createElement('a');
61+
printButton.className = "btnTestDown link-item anchor-font3";
62+
printButton.innerHTML = `<i class="icon icon-download1"></i><span>打印试卷</span>`;
63+
64+
// 打印按钮点击事件
65+
printButton.onclick = function() {
66+
var enableAutoRefresh = localStorage.getItem("EnableAutoRefresh") === 'Y';
67+
68+
// 删除指定类名的元素
69+
function deleteElementByClassName(className) {
70+
while (true) {
71+
var elements = document.getElementsByClassName(className);
72+
if (elements.length === 0) break;
73+
elements[0].remove();
74+
}
75+
}
76+
77+
// 删除指定ID的元素
78+
function deleteElementById(id) {
79+
var element = document.getElementById(id);
80+
if (element) element.remove();
81+
}
82+
83+
// 根据类名移除元素边框
84+
function removeBorderByClassName(className) {
85+
var elements = document.getElementsByClassName(className);
86+
for (var i = 0; i < elements.length; i++) {
87+
elements[i].setAttribute('style', 'margin-bottom: 0;');
88+
}
89+
}
90+
91+
// 根据类名改变元素的CSS
92+
function changeCssByClassName(className, css) {
93+
var elements = document.getElementsByClassName(className);
94+
for (var i = 0; i < elements.length; i++) {
95+
elements[i].setAttribute('style', css);
96+
}
97+
}
98+
99+
// 获取试卷信息
100+
var paperTitle = document.getElementsByClassName('title-txt')[9].innerText;
101+
var subject = document.getElementsByClassName('subject-menu__title')[0].innerText;
102+
103+
// 删除不必要的元素
104+
deleteElementByClassName('header');
105+
deleteElementByClassName('bread-nav');
106+
deleteElementByClassName('fiexd-nav');
107+
deleteElementByClassName('footer');
108+
deleteElementByClassName('other-info');
109+
deleteElementByClassName('info-list');
110+
deleteElementByClassName('tools');
111+
deleteElementByClassName('exam-item__info');
112+
deleteElementByClassName('add-sec-ques');
113+
deleteElementById('paperAnalyze');
114+
deleteElementByClassName('exam-analyze');
115+
116+
// 修改指定元素的CSS
117+
changeCssByClassName('selected-maskt', 'opacity: 1;');
118+
119+
// 通知并打印
120+
console.log("✅ 处理成功!");
121+
GM_notification(subject + '| ' + paperTitle + "\n ✅ 试卷处理成功!");
122+
window.print();
123+
124+
// 自动刷新
125+
if (enableAutoRefresh) {
126+
window.location.reload();
127+
}
128+
};
129+
130+
console.log("🔹 查找将要添加的位置...");
131+
// 查找目标元素并将打印按钮添加到目标位置
132+
var targetElement = document.getElementsByClassName('link-box')[0] || document.getElementsByClassName('btn-box clearfix')[0];
133+
if (targetElement) {
134+
targetElement.appendChild(printButton);
135+
console.log("✅ 程序已就绪!");
136+
} else {
137+
console.error("❌ 无法找到将要添加的位置,程序现在将停止");
138+
alert('❌ 出错了\n脚本无法找到将要添加的位置,程序现在将停止。请联系脚本作者更新!');
139+
}
140+
})();

0 commit comments

Comments
 (0)