Block Facebook Ad's

By Francois Venter Last update Aug 7, 2008 — Installed 2,778 times. Daily Installs: 3, 7, 1, 4, 3, 1, 11, 6, 6, 6, 1, 9, 3, 6, 8, 6, 6, 12, 5, 16, 4, 5, 2, 4, 5, 3, 8, 4, 10, 2, 10, 9

There are 4 previous versions of this script.

// Block Facebook Ads 
// Version 1.2
// 7/6/08
// by Francois Venter, The ShadowGFX ( http://theshadowgfx.com )
// Released Under Creative Commons Attribution-Noncommercial-Share Alike 3.0 United States License
 
// ==UserScript==
// @name           Block Facebook Ad's
// @version 	   1.2
// @namespace      http://theshadowgfx.com
// @description    Blocks Facebook Ad's (Works on new facebook layout too), also remove's gift area from home and sponsored area's.
// @include        http://*facebook.com*
// ==/UserScript==


replacements = {
	
	"\\bAdvertise\\b": "",	
	"\\bMore Ads\\b": "",	

}; 

var openingNumber = 0;
window.addEventListener("load", function(e) {
	var elements = document.evaluate("//div[contains(@class, 'ad_capsule')] | //div[contains(@class, 'social_ad')] | //div[@id='announce'] | //div[contains(@id, 'sponsor')] | //div[contains(@id, 'ssponsor')] | //div[contains(@class, 'invite')] | //div[contains(@id, 'gift')] | //div[contains(@id, 'sponsor')]", document, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);
	var elements = document.evaluate("//div[contains(@class, 'ad_capsule')] | //div[contains(@class, 'social_ad')] | //div[@id='announce'] | //div[contains(@id, 'sponsor')] | //div[contains(@id, 'ssponsor')]", 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);
  }
}, false);
 
regex = {};
for (key in replacements) {
    regex[key] = new RegExp(key, 'g');
}

textnodes = document.evaluate(
    "//text()",
    document,
    null,
    XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, 
    null);
 
for (var i = 0; i < textnodes.snapshotLength; i++) { 
	
	node = textnodes.snapshotItem(i);
	s = node.data;
	
	for (key in replacements) {
		s = s.replace(regex[key], replacements[key]);
	}

	node.data = s;

} 

var paragraphs = document.getElementsByTagName( 'p' );

for ( var i = 0; i < paragraphs.length; i++ )
{

	var paragraph = paragraphs[i];
	paragraph.innerHTML = openings[openingNumber] + paragraph.innerHTML;
	openingNumber++;
	if ( openingNumber == openings.length ) openingNumber = 0;
 
}