您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Customize your SRS-stage display names.
// ==UserScript== // @name WaniKani Rename SRS Stages // @namespace https://www.wanikani.com // @version 1.0.0 // @description Customize your SRS-stage display names. // @author gth99 // @include https://www.wanikani.com* // @run-at document-end // @grant GM_registerMenuCommand // ==/UserScript== function apprenticeDialog() { var menuName = localStorage.getItem("WKBLRApprenticeLevelName") || "Apprentice"; var newText = prompt("New " + menuName + " level name:", menuName); if (newText != null) { if (typeof(newText) !== "string") { newText = String(newText); } newText = newText.trim(); if (newText == "" || newText == "Apprentice") localStorage.removeItem("WKBLRApprenticeLevelName"); else localStorage.setItem("WKBLRApprenticeLevelName", newText); if (menuName != newText) { location.reload(); } } } function guruDialog() { var menuName = localStorage.getItem("WKBLRGuruLevelName") || "Guru"; var newText = prompt("New " + menuName + " level name:", menuName); if (newText != null) { if (typeof(newText) !== "string") { newText = String(newText); } newText = newText.trim(); if (newText == "" || newText == "Guru") localStorage.removeItem("WKBLRGuruLevelName"); else localStorage.setItem("WKBLRGuruLevelName", newText); if (menuName != newText) { location.reload(); } } } function masterDialog() { var menuName = localStorage.getItem("WKBLRMasterLevelName") || "Master"; var newText = prompt("New " + menuName + " level name:", menuName); if (newText != null) { if (typeof(newText) !== "string") { newText = String(newText); } newText = newText.trim(); if (newText == "" || newText == "Master") localStorage.removeItem("WKBLRMasterLevelName"); else localStorage.setItem("WKBLRMasterLevelName", newText); if (menuName != newText) { location.reload(); } } } function enlightenedDialog() { var menuName = localStorage.getItem("WKBLREnlightenedLevelName") || "Enlightened"; var newText = prompt("New " + menuName + " level name:", menuName); if (newText != null) { if (typeof(newText) !== "string") { newText = String(newText); } newText = newText.trim(); if (newText == "" || newText == "Enlightened") localStorage.removeItem("WKBLREnlightenedLevelName"); else localStorage.setItem("WKBLREnlightenedLevelName", newText); if (menuName != newText) { location.reload(); } } } function burnedDialog() { var menuName = localStorage.getItem("WKBLRBurnLevelName") || "Burned"; var newText = prompt("New " + menuName + " level name:", menuName); if (newText != null) { if (typeof(newText) !== "string") { newText = String(newText); } newText = newText.trim(); if (newText == "" || newText == "Burned") localStorage.removeItem("WKBLRBurnLevelName"); else localStorage.setItem("WKBLRBurnLevelName", newText); if (menuName != newText) { location.reload(); } } } function resetAll() { localStorage.removeItem("WKBLRApprenticeLevelName"); localStorage.removeItem("WKBLRGuruLevelName"); localStorage.removeItem("WKBLRMasterLevelName"); localStorage.removeItem("WKBLREnlightenedLevelName"); localStorage.removeItem("WKBLRBurnLevelName"); location.reload(); } function resetAllDialog() { if (confirm("Reset all SRS Level names to their defaults?")) { resetAll(); } } function toggleLevelNumbers() { var curState = localStorage.getItem("WKBLRLevelNumbers") || "off"; if (curState == "off") localStorage.setItem("WKBLRLevelNumbers", "on"); else localStorage.removeItem("WKBLRLevelNumbers"); location.reload(); } function GMsetup() { var curEntry; var togTitle; const subsOn = (localStorage.getItem("WKBLRLevelNumbers") == "on"); if (window.location.href.search("review/session") > 0) return; if (GM_registerMenuCommand) { curEntry = localStorage.getItem("WKBLRApprenticeLevelName") || "Apprentice"; GM_registerMenuCommand((subsOn ? curEntry + " (1-4)" : curEntry), apprenticeDialog); curEntry = localStorage.getItem("WKBLRGuruLevelName") || "Guru"; GM_registerMenuCommand((subsOn ? curEntry + " (1-2)" : curEntry), guruDialog); curEntry = localStorage.getItem("WKBLRMasterLevelName") || "Master"; GM_registerMenuCommand(curEntry, masterDialog); curEntry = localStorage.getItem("WKBLREnlightenedLevelName") || "Enlightened"; GM_registerMenuCommand(curEntry, enlightenedDialog); curEntry = localStorage.getItem("WKBLRBurnLevelName") || "Burned"; GM_registerMenuCommand(curEntry, burnedDialog); GM_registerMenuCommand("Reset All SRS Stage Names...", resetAllDialog); if (subsOn) togTitle = String.fromCharCode(10003) + " Show Sub-Stages during Reviews"; else togTitle = "__ Show Sub-Stages during Reviews"; GM_registerMenuCommand(togTitle, toggleLevelNumbers); } } function updateAllLevelNames() { for (var x=1; x<=5; x++) { updateLevelName(x); } } function updateLevelName(lvl) { var levelName, elementId, storageId switch (lvl) { case 1: levelName = "Apprentice"; elementId = "apprentice"; storageId = "WKBLRApprenticeLevelName"; break; case 2: levelName = "Guru"; elementId = "guru"; storageId = "WKBLRGuruLevelName"; break; case 3: levelName = "Master"; elementId = "master"; storageId = "WKBLRMasterLevelName"; break; case 4: levelName = "Enlightened"; elementId = "enlightened"; storageId = "WKBLREnlightenedLevelName"; break; case 5: levelName = "Burned"; elementId = "burned"; storageId = "WKBLRBurnLevelName"; break; } var desiredName = localStorage.getItem(storageId) || levelName; var theEl = document.getElementById(elementId); var theText; var recentRetired; if (desiredName == levelName) { return; } if (theEl) { theText = theEl.innerHTML; if (theText) { theText = theText.replace(levelName, desiredName); theEl.innerHTML = theText; } } theEl = document.getElementsByClassName(elementId); if (theEl) { var x = 0; while (recentRetired = theEl[x++]) { theText = recentRetired.innerHTML; theText = theText.replace(levelName, desiredName); recentRetired.innerHTML = theText; } } if (lvl == 1) { theEl = document.getElementsByClassName("progression"); if (theEl && theEl[0]) { var capsEl = theEl[0].getElementsByClassName("small-caps"); var y = 0; var textEl; while (capsEl && (textEl = capsEl[y++])) { var spanEl = textEl.getElementsByTagName("span"); if (spanEl && spanEl[0]) { theText = spanEl[0].innerHTML; theText = theText.replace(levelName, desiredName); spanEl[0].innerHTML = theText; } } } } if (lvl == 5) { theEl = document.getElementsByClassName("recent-retired"); if (theEl) { recentRetired = theEl[0]; if (recentRetired) { theText = recentRetired.innerHTML; theText = theText.replace("Burned", desiredName); recentRetired.innerHTML = theText; if (recentRetired.getElementsByClassName("see-more")) { theText = recentRetired.getElementsByClassName("see-more")[0].innerHTML; theText = theText.replace("Burned", desiredName); recentRetired.getElementsByClassName("see-more")[0].innerHTML = theText; } } } theEl = document.getElementsByClassName("legend"); if (theEl) { recentRetired = theEl[0]; if (recentRetired) { var t2 = recentRetired.getElementsByClassName("burned"); if (t2 && t2[0].parentElement && t2[0].parentElement.parentElement) { theText = t2[0].parentElement.parentElement.innerHTML; theText = theText.replace("Burned", desiredName); t2[0].parentElement.parentElement.innerHTML = theText; } } } } } function main () { GMsetup(); updateAllLevelNames(); } window.addEventListener("DOMContentLoaded", main, false);
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址