您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Greasy Fork is available in English.
在HDU教务系统培养计划中对“通过情况”进行补全,方便查看
当前为
// ==UserScript== // @name FIX: HDU教务系统培养计划 // @namespace Violentmonkey Scripts // @match http://jxgl.hdu.edu.cn/* // @grant none // @version 1.1 // @author Rainbow Yang // @description 在HDU教务系统培养计划中对“通过情况”进行补全,方便查看 // ==/UserScript== const scores = { set: (code, score) => sessionStorage.setItem("scores-" + code, score), get: (code) => sessionStorage.getItem("scores-" + code), } const replacement = { set: (code, replacementCode) => sessionStorage.setItem("replace-" + code, replacementCode), get: (code) => sessionStorage.getItem("replace-" + code), } const getScoreURL = () => window.location.href.replace("pyjh.aspx", "xscjcx_dq.aspx").replace("N121607", "N121605") const getReplacementURL = () => window.location.href.replace("pyjh.aspx", "xs_kctdcx.aspx").replace("N121607", "N121622") const readScore = () => { const scoreWindow = window.open(getScoreURL()) scoreWindow.onload = () => { scoreWindow.document.querySelector("#ddlxq").selectedIndex = 0 scoreWindow.document.querySelector("#ddlxn").selectedIndex = 0 scoreWindow.document.querySelector("#btnCx").click() setTimeout(() => { const scoreTable = scoreWindow.document.querySelector("#DataGrid1 > tbody"); [...scoreTable.rows].slice(1).forEach((row) => { const code = row.cells[2].innerHTML const score = row.cells[11].innerHTML scores.set(code, score) }) sessionStorage.setItem('hasRead', true) scoreWindow.close() }, 1000) } } const readReplacement = () => { const replacementWindow = window.open(getReplacementURL()) replacementWindow.onload = () => { const singleTable = replacementWindow.document.querySelector("#dbgrid"); const composeTable = replacementWindow.document.querySelector("#Datagrid1"); [ ...[...singleTable.rows].slice(1), ...[...composeTable.rows].slice(1) ].forEach((row) => { const code = row.cells[1].innerHTML const replacementCode = row.cells[3].innerHTML console.log(code, replacementCode) replacement.set(code, replacementCode) }) replacementWindow.close() } } const addReadButton = () => { const readScoreButton = document.createElement("input") readScoreButton.id = "ReadButton" readScoreButton.type = "button" readScoreButton.className = "button" readScoreButton.value = "读取成绩" readScoreButton.onclick = () => { readReplacement() readScore() } const otherButton = document.querySelector("#Button1") otherButton.parentNode.appendChild(readScoreButton) } const writeScores = () => { let hasRead = sessionStorage.getItem('hasRead') const planTable = document.querySelector('#DBGrid'); [...planTable.rows].slice(1, -1).forEach(row => { let code = row.cells[0].innerHTML row.cells[16].innerHTML = scores.get(code) || (replacement.get(code) && replacement.get(code).split(',').map(code => scores.get(code) + `(${code})`)) || (hasRead ? "未读取到成绩" : "请点击 读取成绩") }) } function main() { if ( document.getElementById("HyperLink1") && document.getElementById("HyperLink1").innerText == "查看培养计划说明" ) { if (!document.getElementById("ReadButton")) { addReadButton() } else { writeScores() } } } main() setInterval(main, 1000)