Remove Facebook Sponsored Wall Ads

By Aaron Patterson Last update Aug 7, 2012 — Installed 2,382 times.

There are 1 previous version of this script.

// ==UserScript==
// @name        Remove Facebook Sponsored Wall Ads
// @namespace   https://userscripts.org/users/3102
// @description Remove sponsored stories from your news feed
// @include     http://www.facebook.com/*
// @include     http://apps.facebook.com/*
// @include     https://www.facebook.com/*
// @version     1
// ==/UserScript==

// --------------------------------------------------------------------
//
// To install, you need Greasemonkey: http://greasemonkey.mozdev.org/
// Then restart Firefox and revisit this script.
// Under Tools, there will be a new menu item to "Install User Script".
// Accept the default configuration and install.
//
// To uninstall, go to Tools/Manage User Scripts,
// select "Remove Facebook Sponsored Wall Ads", and click Uninstall.
//
// --------------------------------------------------------------------
//

var __timeout;

grandparent = document.getElementById('globalContainer'); 
if (grandparent)
{
	grandparent.addEventListener("DOMSubtreeModified", DomModified, true);  //add listener to wall loads
}

DomModified();  //fire once to start

 // based on sub element kill all parent elements - recursive - kills top level elements
 function kill_Parent(Pointer,level) { 
   
	if (!Pointer) return;
	var parent = Pointer.parentNode;
	if (!parent) return;
 
	// keep moving up the parent node - but dont kill the body
	level--;
	if (level>0) {
		if (parent.parentNode && parent.nodeName != 'BODY') {
			//GM_log("recursed: " +Pointer.nodeName);  //debug recursion
			kill_Parent(parent,level);
			return;
		 } 
	} 
	
	//GM_log("removed: " +Pointer.nodeName);   //debug the level we are killing
	parent.removeChild(Pointer);
	//Pointer.style.visibility = 'hidden';
 }  

 /*
	Written by Jonathan Snook, http://www.snook.ca/jonathan
	Add-ons by Robert Nyman, http://www.robertnyman.com
*/
function getElementsByClassName(oElm, strTagName, strClassName){
	var arrElements = (strTagName == "*" && oElm.all)? oElm.all : oElm.getElementsByTagName(strTagName);
	var arrReturnElements = new Array();
	strClassName = strClassName.replace(/\-/g, "\\-");
	var oRegExp = new RegExp("(^|\\s)" + strClassName + "(\\s|$)");
	var oElement;
	for(var i=0; i<arrElements.length; i++){
		oElement = arrElements[i];      
		if(oRegExp.test(oElement.className)){
			arrReturnElements.push(oElement);
		}   
	}
	return (arrReturnElements)
}
 
function Main() {
	__timeout = null;
	//GM_log('fbads main fired');
	
	//Find the sponsored element at the bottom of a wall ad & then kill a lot of its parents.
	//FB does not differentiate their paid "stories" very much so this is fairly fragile code
	//that could easily be broken by a FB update.
	var adboxes = getElementsByClassName(document, "span", "uiStreamAdditionalLogging"); //look for the sponsered link
	for (var i = 0; i < adboxes.length; i++) 
	{
		//GM_log('fbads main kill box: ' + i); 
		kill_Parent(adboxes[i], 7);  //kill a few of its parents.
	}
}

function DomModified() {
	//GM_log('fbads DomModified fired');
	if (__timeout)
	{
		clearTimeout(__timeout);
	}
	__timeout = setTimeout(Main, 300);
}