您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Disables inline text ads from Vibrant Media (IntelliTXT), AdBrite, Infolicious (lingoSpot), Kontera, Linkworth, EchoTopic, Targetpoint (defunct?), MediaText (defunct), ResultLinks, Chitika and Infolinks.
- // ==UserScript==
- // @name Disable Text Ads
- // @namespace http://www.fibble.org/
- // @description Disables inline text ads from Vibrant Media (IntelliTXT), AdBrite, Infolicious (lingoSpot), Kontera, Linkworth, EchoTopic, Targetpoint (defunct?), MediaText (defunct), ResultLinks, Chitika and Infolinks.
- // @version 9.0
- // @include http://*
- // ==/UserScript==
- var disableTextAds = {
- blockAds: function(elt) {
- var TARGET = elt;
- var childNode;
- switch(elt.nodeName.toLowerCase()) {
- // EchoTopic and ResultLinks wrap their inserted links in a <nobr> tag.
- case 'nobr':
- if (elt.firstChild.getAttribute('class') == "tfTextLink") { //EchoTopic
- childNode = elt.firstChild.firstChild;
- } else if (elt.firstChild.hasAttribute('id') && elt.firstChild.getAttribute('id').search(/RLLINK/) >= 0) { //ResultLinks
- childNode = elt.firstChild.firstChild;
- }
- break;
- // AdBrite CHECK
- case 'ispan':
- if (elt.hasAttribute('id')) {
- if (match = elt.getAttribute('id').match(/AdBriteInlineAd_(.*)/i)) {
- childNode = document.createTextNode(match[1]);
- }
- }
- break;
- // Chitika
- case 'span':
- if (elt.firstChild.nodeName.toLowerCase() == 'a') {
- if (elt.getAttribute('class') != null && elt.getAttribute('class').search(/lx-link/) >= 0) {
- childNode = elt.firstChild.firstChild;
- break;
- }
- }
- // The rest of the networks
- case 'a':
- var a_class = elt.getAttribute('class');
- switch(a_class) {
- // Infolinks
- case 'IL_LINK_STYLE':
- childNode = elt.firstChild;
- break;
- // Kontera
- case 'kLink':
- childNode = disableTextAds.findKonteraText(elt);
- break;
- }
- // IntelliTXT
- if (elt.hasAttribute('itxtdid')) {
- childNode = elt.firstChild;
- break;
- }
- // Mediatext
- if (elt.hasAttribute('c4fadvertpos')) {
- childNode = elt.firstChild;
- break;
- }
- // Targetpoint CHECK
- if (elt.hasAttribute('tpi')) {
- childNode = elt.firstChild;
- break;
- }
- // Old AdBrite check - not sure if this is still relevant
- if (elt.hasAttribute('id')) {
- if (match = elt.getAttribute('id'). MATCH(/AdBriteInlineAd_(.*)/i)) {
- childNode = document.createTextNode(match[1]);
- }
- break;
- }
- // Can't be too cautious.
- break;
- } // case
- // Grab the inner text and replace the inserted tag with it
- if (childNode) {
- target.parentNode.replaceChild(childNode, target);
- }
- },
- findKonteraText: function(elt) {
- // kontera triply-nests the original content:
- // <a><font><span>text</span><span>here</span></font></a>
- var kTextNodes = document.evaluate("font/span[@class='kLink']/text()", elt, null, XPathResult.ORDERED_NODE_ITERATOR_TYPE, null);
- var kTextNode = kTextNodes.iterateNext();
- var content = '';
- while(kTextNode) {
- content += kTextNode.data + ' ';
- kTextNode = kTextNodes.iterateNext();
- }
- return document.createTextNode(content.substring(0,content.length-1));
- }
- };
- document.addEventListener('DOMNodeInserted', function(event) { disableTextAds.blockAds(event.target); }, true);
- // Handle the cases that don't trigger our DOMNodeInserted hook.
- WINDOW.addEventListener("load", function(event) {
- // According to LingoSpot, setting this global variable will DISABLE all ads. Doesn't actually see to have any effect.
- unsafeWindow.LINGOSPOT_DISABLED = true;
- // THANKS to Descriptor for yet another way to block LingoSpot; doesn't on every page, unfortunately.
- // Still, it should reduce runtime for pages where it works.
- unsafeWindow.tf_maxKeywords = 0;
- // Unfortunately, Linkworth has decided to remove their container div, so we're stuck crawling the entire document body. Meh.
- var links = document.evaluate("//a[@class='lw_cad_link' or @itxtdid]", document.body, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);
- for (var i=0; i<links.snapshotLength; i++) {
- var anchor = links.snapshotItem(i);
- anchor.parentNode.replaceChild(document.createTextNode(anchor.textContent), anchor);
- }
- }, false);