您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Block posts on Facebook newsfeed that have Follow or Join buttons, bypassing CSP restrictions.
- // ==UserScript==
- // @name Block Facebook Posts with Follow or Join (CSP Safe)
- // @namespace http://github.com/sarahbarberuk
- // @version 1.3
- // @description Block posts on Facebook newsfeed that have Follow or Join buttons, bypassing CSP restrictions.
- // @author Sarah Barber
- // @match https://www.facebook.com/*
- // @grant none
- // @license MIT
- // ==/UserScript==
- (function() {
- 'use strict';
- // Function to find the nearest parent div with exactly one class
- function findNearestParentWithOneClass(element) {
- let parent = element.closest('div');
- while (parent) {
- if (parent.classList.length === 1) {
- return parent; // Found the div with exactly one class
- }
- parent = parent.parentElement.closest('div'); // Move to the next parent div
- }
- return null; // Return null if no such div is found
- }
- // Function to block posts with "Follow" or "Join" buttons
- function blockPostsWithFollowOrJoin() {
- // Get the main newsfeed div
- const mainDiv = document.querySelector('div[role="main"]');
- if (!mainDiv) return;
- // Get all div elements with role="button" inside the main div
- const buttons = mainDiv.querySelectorAll('div[role="button"]');
- // Loop through each button and check if it contains "Follow" or "Join"
- buttons.forEach(button => {
- const span = button.querySelector('span');
- if (span && (span.innerText === 'Follow' || span.innerText === 'Join')) {
- // Find the nearest parent div with exactly one class and hide it
- const postContainer = findNearestParentWithOneClass(button);
- if (postContainer) {
- postContainer.style.display = 'none';
- console.log('Blocked post with:', span.innerText, postContainer);
- }
- }
- // this bit blocks reels and short videos
- const innerDiv = button.querySelector('div');
- if (innerDiv) {
- const innerSpan = innerDiv.querySelector('span');
- if (innerSpan && (innerSpan.innerText === 'Reels and short videos')) {
- // Find the nearest parent div with exactly one class and hide it
- const postContainer = findNearestParentWithOneClass(button);
- if (postContainer) {
- postContainer.style.display = 'none';
- console.log('Blocked post with:', innerSpan.innerText, postContainer);
- }
- }
- }
- });
- }
- // Run the script periodically to catch new posts
- const observer = new MutationObserver(blockPostsWithFollowOrJoin);
- observer.observe(document.body, { childList: true, subtree: true });
- })();