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かなぁ。