您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Removes ads (a.k.a. sponsored posts) from feed and sidebar
当前为
// ==UserScript== // @name Facebook Hide Ads (a.k.a. sponsored posts) // @namespace https://openuserjs.org/users/burn // @version 0.2 // @description Removes ads (a.k.a. sponsored posts) from feed and sidebar // @author burn // @copyright 2020, burn (https://openuserjs.org/users/burn) // @license MIT // @match https://www.facebook.com/* // @grant none // ==/UserScript== (function() { 'use strict'; let qS = function (el, scope) { scope = (typeof scope == 'object') ? scope : document; return scope.querySelector(el) || false; }, qSall = function (els, scope) { scope = (typeof scope == 'object') ? scope : document; return scope.querySelectorAll(els) || false; }, targetNode = qS('body'), observerConfig = { attributes: false, childList: true, subtree: true }, getParentEl = function(elmChild) { return elmChild.closest('[data-pagelet^="FeedUnit_"]') || false; }, removeAdsInFeed = function(ads) { Array.prototype.forEach.call(ads, function(el) { let wrapper = getParentEl(el); wrapper.parentNode.removeChild(wrapper); }); }, callback = function (mutationsList, observer) { mutationsList.forEach(function (mutation) { var entry = { mutation: mutation, el: mutation.target, value: mutation.target.textContent, oldValue: mutation.oldValue }; let ego_wrapper = qS('#pagelet_ego_pane', entry.el); if (ego_wrapper) ego_wrapper.parentNode.removeChild(ego_wrapper); let ads_in_feed = qSall('a[href*="/ads/about/?__cft__"]', entry.el); if (ads_in_feed) removeAdsInFeed(ads_in_feed); }); }; // ads in right sidebar, old fb design let ego_wrapper = qS('#pagelet_ego_pane'); if (ego_wrapper) ego_wrapper.parentNode.removeChild(ego_wrapper); /* new fb 2020 design */ let ads_in_feed = qSall('a[href*="/ads/about/?__cft__"]'); if (ads_in_feed) removeAdsInFeed(ads_in_feed); var observer = new MutationObserver(callback); observer.observe(targetNode, observerConfig); })();