// ==UserScript== // @name 课程分数占比查看(中南林) // @license GNU GPLv3 // @namespace http://tampermonkey.net/ // @version 0.1 // @description 点击蓝色成绩即可进入查看,恢复隐藏的成绩链接并隐藏原始不可点击的成绩 // @match http://jwgl.webvpn.csuft.edu.cn/jsxsd/kscj/* // @run-at document-end // @downloadURL none // ==/UserScript== (function() { 'use strict'; // 主处理函数 const processPage = () => { // 1. 恢复注释中的成绩链接 const walker = document.createTreeWalker(document.body, NodeFilter.SHOW_COMMENT, null, false); const toRemove = []; let node; while ((node = walker.nextNode())) { let content = node.nodeValue.trim(); if (content.startsWith('')) { content = content.replace(/&/g, '&'); const range = document.createRange(); range.setStartAfter(node); const frag = range.createContextualFragment(content); node.parentNode.insertBefore(frag, node); toRemove.push(node); } } toRemove.forEach(n => n.remove()); // 2. 隐藏原始不可点击的成绩 const dataTable = document.getElementById('dataList'); if (!dataTable) return; const rows = dataTable.rows; for (let i = 0; i < rows.length; i++) { const cells = rows[i].cells; if (cells.length > 5) { // 隐藏第六列(不可点击的成绩) cells[5].style.display = 'none'; // 调整第五列(可点击的成绩)的样式 const scoreLink = cells[4].querySelector('a'); if (scoreLink) { scoreLink.style.display = 'inline-block'; scoreLink.style.verticalAlign = 'middle'; scoreLink.style.lineHeight = 'normal'; } } } }; // 初始执行 processPage(); // 监听动态变化 const observer = new MutationObserver(mutations => { let needsUpdate = false; mutations.forEach(mutation => { if (mutation.addedNodes.length) needsUpdate = true; }); if (needsUpdate) processPage(); }); observer.observe(document.body, { childList: true, subtree: true, attributes: false, characterData: false }); })();