您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
This userscript removes the "x followers", "y following" and "Set Status" fields on your own gist.github.com profile page. This is just visual.
// ==UserScript== // @name Remove Social Media for gist.github.com // @description This userscript removes the "x followers", "y following" and "Set Status" fields on your own gist.github.com profile page. This is just visual. // @author ths197 // @license BSD-3-Clause // @namespace https://gist.github.com/ths197 // @include https://gist.github.com // @include https://gist.github.com/* // @noframes // @run-at document-start // @version 0.0.1.20250509081738 // ==/UserScript== "use strict"; // conditions const isOnLoginUsersHomePage = function () { const user_login_name = document.querySelector( "meta[name='user-login']" ).content; const page_user_name = window.location.pathname.split("/")[1]; return user_login_name === page_user_name; }; var state = undefined; const isDocumentChanged = () => !state?.isConnected; // getting and removing const getControlElement = () => document.getElementById("gist-pjax-container"); // div, gets replaced on navigation by the webapp const getSidebar = () => document.getElementsByClassName("js-profile-editable-replace")[0]; // div const socialMediaUrlOptions = ["followers", "following"]; const removeSocialMediaButtons = function (node) { const links = Array.from(node.getElementsByTagName("a")); const anySocialMediaLink = links.find((node) => socialMediaUrlOptions.some((option) => new URLSearchParams(new URL(node.href).search).has("tab", option) ) ); anySocialMediaLink?.parentElement.remove(); Array.from(node.getElementsByClassName("user-status-container")).forEach( (statusContainer) => statusContainer.remove() ); }; // applying const applyChanges = function () { if (isOnLoginUsersHomePage() && isDocumentChanged()) { state = getControlElement(); if (state != null) { const sidebar = getSidebar(); // js-profile-editable-replace is in the subtree of div#gist-pjax-container if (sidebar != null) { removeSocialMediaButtons(sidebar); } } } }; // setting stuff up (boring) const mutationObserver = new MutationObserver(() => applyChanges()); const attachMutationObserver = () => mutationObserver.observe(document.body, { subtree: false, childList: true }); const init = function () { applyChanges(); attachMutationObserver(); }; if (document.readyState === "loading") { document.addEventListener("DOMContentLoaded", init); } else { init(); }