您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Remove annoying crap from FB
// ==UserScript== // @name JJB FB filter // @version 1 // @grant none // @description Remove annoying crap from FB // @author Jeremy Bornstein <[email protected]> // @match https://*.facebook.com/* // @grant none // @namespace https://greasyfork.org/users/414927 // ==/UserScript== (function() { 'use strict'; const debug = true; function removeMatchingNodes(parent, selector, predicate, findParent, debugBGColor, debugTextColor, removeIt) { const nodes = parent.querySelectorAll(selector); for (let i = 0; i < nodes.length; i++) { const node = nodes[i]; if (predicate(node)) { const offendingNode = findParent(node); if (debugBGColor && debugTextColor) { console.debug("found", node); offendingNode.style.backgroundColor = debugBGColor; offendingNode.style.color = debugTextColor; console.debug("TARGET", offendingNode); } if (removeIt) { //offendingNode.parentNode.removeChild(offendingNode); offendingNode.hidden = true; offendingNode.style.display = "none"; } } } } function removeAds(parent) { function isTargetNode(n) { const nodeText = n.innerText; return nodeText == "Sponsorisé" || nodeText == "Sponsored" || nodeText == "Promoted" } removeMatchingNodes(parent, 'h3 div', isTargetNode, n => n.parentElement.parentElement.parentElement.parentElement.parentElement.parentElement.parentElement.parentElement, null, null, true); } removeAds(document); const observer = new MutationObserver(function(mutationsList, observer) { for(let mutation of mutationsList) { if (mutation.type === 'childList') { const addedNodes = mutation.addedNodes; for (let node of addedNodes) { removeLikedBy(node); removeFollowedBy(node); removeAds(node); removeTrendAds(node); // trends are only loaded once (and always dynamically) so theoretically we could disable this after it finds any once. } } } }); observer.observe(document.body, { childList: true, subtree: true }); })();