Greasy Fork is available in English.
开始学习直接跳转到学习页,不用二次中转
// ==UserScript==
// @name 专业技术人员学习新干线
// @namespace https://learning.hzrs.hangzhou.gov.cn
// @description 开始学习直接跳转到学习页,不用二次中转
// @author NetFert
// @match https://learning.hzrs.hangzhou.gov.cn/*
// @grant none
// @license MIT
// @version 0.0.4
// ==/UserScript==
(function () {
"use strict";
const loadLearnList = () => {
fetch("https://learning.hzrs.hangzhou.gov.cn/api/index/Course/index", {
headers: {
accept: "application/json, text/plain, */*",
authorization: "Bearer " + localStorage.getItem("front_token"),
"cache-control": "no-cache",
"content-type": "application/json",
pragma: "no-cache",
"sec-fetch-dest": "empty",
"sec-fetch-mode": "cors",
"sec-fetch-site": "same-origin",
},
referrer: "https://learning.hzrs.hangzhou.gov.cn/",
referrerPolicy: "strict-origin-when-cross-origin",
body: '{"limit":10,"page":1}',
method: "POST",
mode: "cors",
credentials: "include",
})
.then((response) => response.json())
.then((res) => {
const tbodyChildren =
document.getElementsByTagName("tbody")[0].children;
for (let i = 0; i < tbodyChildren.length; i++) {
const childElement = tbodyChildren[i];
childElement.childNodes[4].children[0].children[0].children[0].addEventListener(
"click",
function (e) {
e.stopPropagation();
e.preventDefault();
window.open(
"https://learning.hzrs.hangzhou.gov.cn/#/class?courseId=" +
res.data.data[i].courseid +
"&coursetitle=" +
res.data.data[i].coursename
);
},
true
);
}
});
};
const tryLoadLearnList = () => {
let attempts = 0;
const maxAttempts = 3000;
const intervalTime = 10;
function checkAndLoad() {
const tbody = document.getElementsByTagName("tbody")[0];
if (tbody && tbody.children.length > 0) {
loadLearnList();
} else {
attempts++;
if (attempts < maxAttempts) {
setTimeout(checkAndLoad, intervalTime);
} else {
alert("脚本无法成功运行,可能失效了。");
}
}
}
checkAndLoad();
};
const killConfirm = () => {
setInterval(() => {
console.log("正在寻找确认按钮...");
const allElements = document.querySelectorAll("*");
const confirmButtons = [];
allElements.forEach((el) => {
if (el.textContent.trim() === "确定") {
confirmButtons.push(el);
}
});
for (let i = 0; i < confirmButtons.length; i++) {
const button = confirmButtons[i];
if (button.tagName === "BUTTON" || button.tagName === "A") {
console.log("击毙确认按钮中...");
button.click();
}
}
}, 3000);
};
window.addEventListener("load", function () {
if (window.location.hash.includes("#/learn")) {
tryLoadLearnList();
}
if (window.location.hash.includes("#/class")) {
killConfirm();
}
});
})();