Flash and Ad Killer

By yah Last update Sep 30, 2008 — Installed 2,528 times.

There are 4 previous versions of this script.

// ==UserScript==
// @name           Flash and Ad Killer
// @namespace      http://userscripts.org/scripts/review/99999
// @include        http://*
// @exclude        http://*mail.google.com/*
// @exclude        https://*mail.google.com/*

// @description    Kills flash objects and adds
// ==/UserScript==

//Remove Objects
	var allLinks, thisLink;
	allLinks = document.evaluate( '//object', 
			document, 
			null, 
			XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, 
			null); 
	for (var i = 0; i < allLinks.snapshotLength; i++) { 
	  thisLink = allLinks.snapshotItem(i);
	  GM_log("Removed Found object: " + thisLink);
	  thisLink.parentNode.removeChild(thisLink);
	}
	
//Remove Embeds
	var allLinks, thisLink;
	allLinks = document.evaluate( '//embed', 
			document, 
			null, 
			XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, 
			null); 
	for (var i = 0; i < allLinks.snapshotLength; i++) { 
	  thisLink = allLinks.snapshotItem(i);
	  GM_log("Removed Found Embed: " + thisLink);
	  thisLink.parentNode.removeChild(thisLink);
	}	

//Remove iframes
	var allLinks, thisLink;
	allLinks = document.evaluate( '//iframe', 
			document, 
			null, 
			XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, 
			null); 
	for (var i = 0; i < allLinks.snapshotLength; i++) { 
	  thisLink = allLinks.snapshotItem(i);
	  GM_log("Removed Found iframe: " + thisLink);
	  thisLink.parentNode.removeChild(thisLink);
	}

//Remove Links
	var allLinks, thisLink;
	var regex = /\.ads\/|\/ads\/|ad\.doubleclick|googlesyndication|\/banners\/|alexa\.com|adlink|pop_me_up|adfeatures/gi
	allLinks = document.evaluate( '//a[@href]',
			document, 
			null, 
			XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, 
			null); 
	for (var i = 0; i < allLinks.snapshotLength; i++) {
	  	thisLink = allLinks.snapshotItem(i);
	 	var urll = thisLink.href;
	  	if (urll.search(regex) != -1) {
	  		thisLink.parentNode.removeChild(thisLink);
	  		GM_log("Removed Found ads: " + thisLink);
	  	}
	}

//Remove Images
	var allLinks, thisLink;
	var regex = /(b|B)anner|adsense|advertisement|tribalfusion|\/ads/gi
	allLinks = document.evaluate( '//img',
			document, 
			null, 
			XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, 
			null); 
	for (var i = 0; i < allLinks.snapshotLength; i++) {
	  	thisLink = allLinks.snapshotItem(i);
	 	var urll = thisLink.src + thisLink.alt;
	  	if (urll.search(regex) != -1) {
	  		thisLink.parentNode.removeChild(thisLink);
	  		GM_log("Removed Found image: " + thisLink);
	  	}
	}

//remove any banner images -- id contains match
	var allLinks, thisLink;
	var regex = /(b|B)anner|subscribeForm|mainSubOffer/gi;
	allLinks = document.evaluate( '//div[@id]',
			document, 
			null, 
			XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, 
			null); 
	for (var i = 0; i < allLinks.snapshotLength; i++) {
	  	thisLink = allLinks.snapshotItem(i);
	  	if (thisLink.id.search(regex) != -1) {
	  		thisLink.parentNode.removeChild(thisLink);
  			GM_log("Removed Found banner -- matched id: " + thisLink.innerHTML);
  		}
	}

//remove any banner divs -- class contains match
	var allLinks, thisLink;
	var regex = /banner|alexa|articleAds/gi;
	allLinks = document.evaluate( "//div[@class]",
			document, 
			null, 
			XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, 
			null); 
	GM_log("allLinks.snapshotLength: " + allLinks.snapshotLength);
	for (var i = 0; i < allLinks.snapshotLength; i++) {
		thisLink = allLinks.snapshotItem(i);
		GM_log("thisLink.className: " + thisLink.className);
		if (thisLink.className.search(regex) != -1) {
			thisLink.parentNode.removeChild(thisLink);
		}
	}

//Might be worth testing how fast this compares with loading all elemenets and processing them.