NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript== // @name De-Sarahah Facebook // @include http://*.facebook.com/* // @include https://*.facebook.com/* // @version 0.01 // @description Reduce the number of S-a-r-a-h-a-h related posts on your Facebook News Feed, because confession pages are so 2012 // @author Abhishek Ghosh (abhishek.c.ghosh@gmail.com) // ==/UserScript== // This is a very basic, sub-optimal, stupid implementation that *reduces* (not eliminates) the number // of (probable) Sarahah related posts on your Facebook news feed. This does a basic keyword scan is not bulletproof // // So don't blame the guy for writing it in 2 mins (function() { 'use strict'; // Make this configurable and block Donald Trump posts tomorrow as well var regex = /(sarahah)/gim; var markerClass = '__sarahah_marked__'; var showText = 'Show hidden probable Sarahah post'; var contentArea = document.getElementById('contentArea'); if (!contentArea) return; function createShowLink(post) { var showLink = document.createElement('div'); var showLinkText = document.createTextNode(showText); showLink.style.textDecoration = 'underline'; showLink.style.cursor = 'pointer'; showLink.style.paddingBottom = '10px'; showLink.appendChild(showLinkText); showLink.addEventListener('click', function () { post.style.display = 'block'; showLink.style.display = 'none'; }); return showLink; } function suppressPost(post) { if (post.classList.contains(markerClass)) return; post.classList.add(markerClass); post.parentNode.insertBefore(createShowLink(post), post); post.style.display = 'none'; } function process() { var posts = contentArea.querySelectorAll('[data-testid="fbfeed_story"]'); for(var c = 0; c < posts.length; c++) { if (posts[c].textContent.search(regex) > -1) { suppressPost(posts[c]); } } } // Setup routine to check for new posts with a dumb timed interval... // Thought of patching XHR.send to detect when new items are loaded, but // some requests were failing with CORS issue... and other way would be // to use Mutation Observers, but fuck 'em because I'm feeling lazy... setInterval(process, 3000); // May the odds be in your favour process(); })();