Remove Chain Letters from Facebook News Feed

By scriptbunny Last update Feb 9, 2009 — Installed 286 times.

There are 2 previous versions of this script.

// ==UserScript==
// @name           Remove Chain Letters from Facebook News Feed
// @description    Removes Facebook Notes chain letters like "25 Random Things" from your Facebook news feed.
// @version        0.1
// @namespace      http://userscripts.org/users/80238
// @include        *facebook.com*
// ==/UserScript==

// Below is a list of the chain letter titles to filter out.
// Any Facebook Notes that match these titles will be removed
// from your Facebook news feed.
// You can add more chain letters to this list if you like.
// Note: this list is case-sensitive, so you may need to use
// different variations on capitalization for it to work.

var chainLetterTitles = new Array (
    "25 random things",
    "25 Random Things",
    "25 Random things",
    "25 things",
    "25 Things",
    "20 things with one word beginning in J",
    "In my senior year of high school"
);

var predicate;

function removeFacebookNotesChainLetters() {

    var elements = document.evaluate(
        "//a[" + predicate + "]/ancestor::div[contains(@class, 'feed_note')]",
        document,
        null,
        XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE,
        null
    );

    for (var i = 0; i < elements.snapshotLength; i++) {
        var thisElement = elements.snapshotItem(i);
        thisElement.parentNode.removeChild(thisElement);
    }
}

function buildXPathPredicate ()
{
    predicate = "";
    for (var i = 0; i < chainLetterTitles.length; i++) {
        if (i > 0) {
            predicate += " or ";
        }
        predicate += "contains(., \"";
        predicate += chainLetterTitles[i];
        predicate += "\")";
    }
    return predicate;
}

buildXPathPredicate();
document.addEventListener("DOMNodeInserted", removeFacebookNotesChainLetters, true);