您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
clean the world
- // ==UserScript==
- // @name block-users
- // @namespace http://tampermonkey.net/
- // @version 2024-10-21
- // @description clean the world
- // @author misc
- // @match https://www.uscardforum.com/*
- // @icon https://asset-cdn.uscardforum.com/optimized/1X/05236f295ec6a40bdd5588b3d35a04d01ebfb67e_2_32x32.png
- // @grant none
- // ==/UserScript==
- const users = [];
- function getSelector(users) {
- return users
- .map((user) => {
- const post = `[aria-label^="@${user}"]`;
- const quote = `aside[data-username="${user}"]`;
- const card = `a[data-user-card="${user}"]`;
- const gap = `.gap`;
- return `${post},${quote},${card}`;
- })
- .join(',');
- }
- function hideElements(users) {
- const selector = getSelector(users);
- const els = document.querySelectorAll(selector);
- els.forEach((el) => {
- el.classList.add('hide');
- });
- }
- function hideReply(users) {
- const selector = users.map((user) => `img.avatar[title="${user}"]`).join(',');
- const els = document.querySelectorAll(selector);
- els.forEach((el) => {
- el.closest('.reply-to-tab')?.classList.add('hide');
- });
- }
- function hideGap() {
- const els = document.querySelectorAll('.gap');
- els.forEach((el) => {
- if (el.textContent.includes('隐藏回复')) {
- el.classList.add('hide');
- }
- });
- }
- function debounce(fn) {
- let raf;
- return function (...args) {
- if (raf) {
- cancelAnimationFrame(raf);
- }
- raf = requestAnimationFrame(() => {
- fn.apply(this, args);
- });
- };
- }
- function modifyDOM() {
- hideElements(users);
- hideReply(users);
- hideGap();
- }
- (function () {
- 'use strict';
- const observer = new MutationObserver(debounce(modifyDOM));
- observer.observe(document.body, { childList: true, subtree: true });
- modifyDOM();
- })();