// ==UserScript== // @name FIX: HDU教务系统培养计划 // @namespace Violentmonkey Scripts // @match http://jxgl.hdu.edu.cn/* // @grant none // @version 1.0 // @author Rainbow Yang // @description 在HDU教务系统培养计划中对“通过情况”进行补全,方便查看 // @downloadURL none // ==/UserScript== let scores = { set: sessionStorage.setItem.bind(sessionStorage), get: sessionStorage.getItem.bind(sessionStorage) } const readScore = () => { const scoreWindow = window.open(window.location.href.replace("pyjh.aspx", "xscjcx_dq.aspx").replace("N121607", "N121605")) return new Promise(resolve => { 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() console.log(scores) resolve(scores) }, 1000) } }) } const addReadButton = () => { const readScoreButton = document.createElement("input") readScoreButton.id = "ReadButton" readScoreButton.type = "button" readScoreButton.className = "button" readScoreButton.value = "读取成绩" readScoreButton.onclick = 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 => { row.cells[16].innerHTML = scores.get(row.cells[0].innerHTML) || (hasRead ? "未读取到成绩" : "请点击 读取成绩") }) } function main() { if ( document.getElementById("HyperLink1") && document.getElementById("HyperLink1").innerText == "查看培养计划说明" ) { if (!document.getElementById("ReadButton")) { addReadButton() } else { writeScores() } } } main() setInterval(main, 1000)