// ==UserScript== // @name 组卷网试卷处理下载打印 // @version 1.0.0 // @namespace https://github.com/bzyzh // @description 【2024/8/3】自动处理组卷网试卷,并打印,同时去除浏览试卷时的广告。 // @author nuym // @match https://zujuan.xkw.com/zujuan // @match https://zujuan.xkw.com/*.html // @icon https://zujuan.xkw.com/favicon.ico // @grant GM_registerMenuCommand // @grant GM_notification // @homepage https://github.com/bzyzh/xkw-zujuan-script // @license GNU Affero General Public License v3.0 // @downloadURL none // ==/UserScript== (function() { 'use strict'; console.log("✅ 程序加载成功"); // 获取用户信息 var username = document.getElementsByClassName('user-nickname')[0].innerText; var usertype = document.getElementsByClassName('user-type plus')[0].innerText; var endtime = document.getElementsByClassName('end-time')[0].innerText; console.log("-----------------------------------------------"); console.log("🔹版本:1.0.0"); console.log("🔹作者:nuym"); console.log("🔹开源地址:https://github.com/bzyzh/xkw-zujuan-script"); console.log("🔹学校网站:https://www.bzyzh.com"); console.log("🔹组卷网用户: %s", username); console.log("🔹组卷网等级: %s", usertype); console.log("🔹组卷网到期时间: %s", endtime); console.log("-----------------------------------------------"); // 去除广告 var adElement = document.getElementsByClassName("aside-pop activity-btn")[0]; if (adElement) { adElement.remove(); console.log("✅ 去除广告成功"); } // 注册菜单命令以处理后自动刷新 GM_registerMenuCommand("处理后自动刷新", () => { var autoRefreshStatus = localStorage.getItem("EnableAutoRefresh"); if (autoRefreshStatus === 'N') { localStorage.setItem("EnableAutoRefresh", 'Y'); GM_notification("处理后自动刷新:已开启"); } else { localStorage.setItem("EnableAutoRefresh", 'N'); GM_notification("处理后自动刷新:已关闭"); } }); // 初始化处理后自动刷新状态 if (localStorage.getItem("EnableAutoRefresh") == null) { localStorage.setItem("EnableAutoRefresh", 'Y'); } console.log("🔹 创建按钮对象..."); var printButton = document.createElement('a'); printButton.className = "btnTestDown link-item anchor-font3"; printButton.innerHTML = `打印试卷`; // 打印按钮点击事件 printButton.onclick = function() { var enableAutoRefresh = localStorage.getItem("EnableAutoRefresh") === 'Y'; // 删除指定类名的元素 function deleteElementByClassName(className) { while (true) { var elements = document.getElementsByClassName(className); if (elements.length === 0) break; elements[0].remove(); } } // 删除指定ID的元素 function deleteElementById(id) { var element = document.getElementById(id); if (element) element.remove(); } // 根据类名移除元素边框 function removeBorderByClassName(className) { var elements = document.getElementsByClassName(className); for (var i = 0; i < elements.length; i++) { elements[i].setAttribute('style', 'margin-bottom: 0;'); } } // 根据类名改变元素的CSS function changeCssByClassName(className, css) { var elements = document.getElementsByClassName(className); for (var i = 0; i < elements.length; i++) { elements[i].setAttribute('style', css); } } // 获取试卷信息 var paperTitle = document.getElementsByClassName('title-txt')[9].innerText; var subject = document.getElementsByClassName('subject-menu__title')[0].innerText; // 删除不必要的元素 deleteElementByClassName('header'); deleteElementByClassName('bread-nav'); deleteElementByClassName('fiexd-nav'); deleteElementByClassName('footer'); deleteElementByClassName('other-info'); deleteElementByClassName('info-list'); deleteElementByClassName('tools'); deleteElementByClassName('exam-item__info'); deleteElementByClassName('add-sec-ques'); deleteElementById('paperAnalyze'); deleteElementByClassName('exam-analyze'); // 修改指定元素的CSS changeCssByClassName('selected-maskt', 'opacity: 1;'); // 通知并打印 console.log("✅ 处理成功!"); GM_notification(subject + '| ' + paperTitle + "\n ✅ 试卷处理成功!"); window.print(); // 自动刷新 if (enableAutoRefresh) { window.location.reload(); } }; console.log("🔹 查找将要添加的位置..."); // 查找目标元素并将打印按钮添加到目标位置 var targetElement = document.getElementsByClassName('link-box')[0] || document.getElementsByClassName('btn-box clearfix')[0]; if (targetElement) { targetElement.appendChild(printButton); console.log("✅ 程序已就绪!"); } else { console.error("❌ 无法找到将要添加的位置,程序现在将停止"); alert('❌ 出错了\n脚本无法找到将要添加的位置,程序现在将停止。请联系脚本作者更新!'); } })();v