您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
restore subscribers counter on reddit
// ==UserScript== // @name Reddit - Restore subscribers counter // @namespace https://greasyfork.org/users/821661 // @version 1.0.3 // @description restore subscribers counter on reddit // @author hdyzen // @match https://www.reddit.com/* // @icon https://www.google.com/s2/favicons?domain=www.reddit.com/&sz=64 // @grant GM.xmlHttpRequest // @license GPL-3.0-only // ==/UserScript== function setCountersDesktop() { const observer = new MutationObserver(() => { const node = document.querySelector("shreddit-subreddit-header:not([subscribers])"); if (!node) return; const membersCount = document.querySelector("#subgrid-container div.xs\\:hidden > :nth-child(1) [number]")?.getAttribute("number"); const onlineCount = document.querySelector("#subgrid-container div.xs\\:hidden > :nth-child(2) [number]")?.getAttribute("number"); node.setAttribute("subscribers", membersCount); node.setAttribute("active", onlineCount); node.removeAttribute("activity-indicators-enabled"); }); observer.observe(document.body, { childList: true }); } async function setCounterMobile() { const observer = new MutationObserver(async () => { const node = document.querySelector("#subgrid-container div.lowercase:not([processing])"); if (!node) return; node.setAttribute("processing", ""); node.outerHTML = await getCountersHTML(); }); observer.observe(document.body, { childList: true }); } async function getCountersHTML() { return new Promise((resolve, reject) => { GM.xmlHttpRequest({ url: window.location.href, responseType: "document", headers: { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:143.0) Gecko/20100101 Firefox/143.0", }, onload(event) { try { console.log("Load", event); const doc = event.response; const counters = doc.querySelector("#subgrid-container div.xs\\:hidden"); if (counters) { resolve(counters.outerHTML); } else { reject("Counters not found"); } } catch (err) { reject(err); } }, onerror(err) { reject(err); }, }); }); } const isMobile = GM_info?.platform?.mobile || /Android|iPhone|iPad|iPod/i.test(navigator.userAgent); if (isMobile) { setCounterMobile(); } else { setCountersDesktop(); }