您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Changes the displayed difficulty on Codeforces problemset to XXXX
// ==UserScript== // @name Codeforces Rating Hider // @namespace http://tampermonkey.net/ // @version 1.0.0 // @description Changes the displayed difficulty on Codeforces problemset to XXXX // @author Zafir Hasan Anogh // @match https://codeforces.com/ // @match https://codeforces.com/* // @grant none // @run-at document-idle // @license MIT // ==/UserScript== (function() { 'use strict'; function hideDifficulty() { const difficultySpans = document.querySelectorAll('span[title="Difficulty"]'); difficultySpans.forEach(span => { if (span.innerText !== 'XXXX') { span.innerText = 'XXXX'; } }); } hideDifficulty(); const observer = new MutationObserver(function(mutationsList, observer) { let needsUpdate = false; for (const mutation of mutationsList) { if (mutation.type === 'childList' && mutation.addedNodes.length > 0) { for (const node of mutation.addedNodes) { if (node.nodeType === Node.ELEMENT_NODE) { if (node.matches('span[title="Difficulty"]') || node.querySelector('span[title="Difficulty"]')) { needsUpdate = true; break; } } } } if (needsUpdate) break; } if (needsUpdate) { hideDifficulty(); } else { const anyVisibleDifficulty = document.querySelector('span[title="Difficulty"]:not(:empty)'); if (anyVisibleDifficulty && anyVisibleDifficulty.innerText !== 'XXXX') { hideDifficulty(); } } }); const targetNode = document.body; const config = { childList: true, subtree: true }; if (targetNode) { observer.observe(targetNode, config); } window.addEventListener('load', hideDifficulty); })();