Google AdSenseがウザいんですよ。っていうかクリックしたこと一度もないし、サイトと全然関係ない広告ばっかりで役にたたないし、等々で前々から目障りだなぁと思ってました。
どうにかできんもんかなぁと思って、この前nozomさんの書いたJavascriptで継続渡しを読んでそのままpythonへ写したとき、以前あったJavaScriptアレルギーがめっきり少なくなってたので(今でもありますが)、Greasemonkeyに挑戦してみることにした。
どのサイトでも効くかどうかは調べてないけど、とりあえずこんな感じ。
// ==UserScript== // @name Google Adsense Remover // @description removing remove google Adsense. // ==/UserScript== (function () { var ad_name = "google_ads_frame"; var iframes = document.getElementsByTagName("iframe"); var googleAd; for (var i = 0; i < iframes.length; i++) { googleAd = iframes[i]; if (googleAd.getAttribute("name") == ad_name) { googleAd.parentNode.removeChild(googleAd); } } })();
これ書く上で、始めてfirefoxのDOMインスペクタ使ったんですが、便利ですね!(今更
さ、次はamazonへのリンクURLからアマゾンアソシエイツのIDを削るのを書くぞー。
やってることは単なるURLの成形。あと、ASIN以降にredirect〜とか書かれている場合の対応をしないといけないけど、面倒になってきたんでそれはそのうち。
ちなみにURLのamazonアソシエイツID以降を削りたいのは、リンクが商品詳細へのリンクになっておらず、アソシエイツユーザのレコメンド一覧のページへのリンクになっているのが嫌だから。
// ==UserScript== // @name Amazon Associate ID Remover // @description removing Amazon Associate ID. // ==/UserScript== (function () { var delim = "/"; var attrName = "href"; var amazon = "www.amazon.co.jp"; var ASIN = "ASIN"; var links = document.getElementsByTagName("a"); var url; var fixedUrl; for (var i = 0; i < links.length; i++) { element = links[i]; if (element.hasAttribute(attrName)) { url = element.getAttribute(attrName); if (url.indexOf(amazon) != -1) { tokens = url.split(delim); fixedUrl = "http://" + amazon; for (var j = 3; j < tokens.length; j++) { if (tokens[j] == ASIN) { fixedUrl = fixedUrl + delim + ASIN + delim + tokens[j+1]; break; } else { fixedUrl = fixedUrl + delim + tokens[j]; } } element.setAttribute(attrName, fixedUrl); } } } })();
DOMインスペクタとWeb Developerが無いと開発がままならないです、ままならないっていうか不可能。あと、javascript-mode.el必須。
まぁJavascriptといっても必要な知識はほとんどはDOMかなぁ。