Removes unnecessary elements from fandom website, leaving only what's important.
目前為
// ==UserScript==
// @name fandom.com - Remove bloatware
// @namespace fandom.com utils
// @match https://*.fandom.com/*
// @icon https://raw.githubusercontent.com/eye-wave/greasy-fork/main/packages/fandom-debloat/assets/icon.svg
// @description Removes unnecessary elements from fandom website, leaving only what's important.
// @grant none
// @version 1.0.0
// @author eye-wave
// @license GPL-3.0+
// ==/UserScript==
"use strict";
(() => {
// ../../utils/src/index.ts
function $(query) {
return document.querySelectorAll(query);
}
function $s(query) {
return document.querySelector(query);
}
// src/window.js
window.ads = void 0;
// src/index.ts
var toResize = [".fandom-community-header__background", ".main-container"];
var massRemove = ["iframe", "link[as='script']", "meta", "script", "style:not([type='text/css'])"];
var removeListSingle = [
".bottom-ads-container",
".fandom-sticky-header",
".global-navigation",
".global-registration-buttons",
".notifications-placeholder",
".page__right-rail",
".page-side-tools",
".right-rail-wrapper",
".top-ads-container",
".unified-search__layout__right-rail",
"#age-gate",
"#featured-video__player-container",
"#global-explore-navigation",
"#p-views",
"#WikiaBar",
"body > svg + *",
"div>div[data-tracking-opt-in-overlay]",
"footer"
];
removeBloatware();
function removeBloatware() {
removeListSingle.forEach((q) => $s(q)?.remove());
massRemove.forEach((q) => $(q).forEach((e) => e?.remove()));
toResize.forEach((q) => $s(q)?.setAttribute("style", "width:100%;margin:0"));
}
removeExcessiveBodyClassNames();
function removeExcessiveBodyClassNames() {
for (const c of document.body.classList) {
if (c.includes("skin-fandom"))
continue;
document.body.classList.remove(c);
}
}
function removeExcessiveHtmlAttrs() {
document.documentElement.removeAttribute("class");
document.documentElement.removeAttribute("dir");
document.documentElement.removeAttribute("style");
}
new MutationObserver((mutationsList) => {
for (const mutation of mutationsList) {
if (mutation.type === "childList")
removeBloatware();
if (mutation.type === "attributes") {
removeExcessiveBodyClassNames();
removeExcessiveHtmlAttrs();
}
}
}).observe(document.documentElement, {
childList: true,
subtree: true,
attributes: true,
attributeOldValue: true
});
})();