素人がプログラミングを勉強していたブログ

プログラミング、セキュリティ、英語、Webなどのブログ since 2008

連絡先: すかいぷ:javascripter_  か javascripter あっと tsukkun.net skypeのほうがいいです

Googleの検索結果から指定したサイトを目立たなくするGreasemonkey

はてブとかyoutubeとかニコニコとかを目立たなくする。

googleBadList.user.js:

// ==UserScript==
// @name           GoogleBadList
// @namespace      http://d.hatena.ne.jp/javascripter/
// @description    Googleの検索結果から指定したものを目立たなくする
// @include        http://www.google.co*
// ==/UserScript==

var badList=[
/^http:\/\/b\.hatena\.ne\.jp\/entry\//,
/youtube\.com/,
/www\.nicovideo\.jp/
];

var search=function(docs){
 for(var n=0;n<docs.length;n++){
  var resultList=docs[n].getElementsByClassName('g');
  var resultAddress=docs[n].getElementsByClassName('l');
  for(var i=0;i<badList.length;i++){
   for(var j=0;j<resultList.length;j++){
    if(resultAddress[j].href.match(badList[i])){
//    resultList[j].style.opacity='0.3';
  resultList[j].parentNode.removeChild(resultList[j]);
    j--;
    }
   }
  }
 }
}

search([document]);
if(window.AutoPagerize) window.AutoPagerize.addFilter(search);

AutoPagerizeに対応するところは勝手に添削してみる (AutoPagerize対応GMScriptの書き方みたいな) - FFFF - 0xを参考にした。
あと、はじめのうちは

    resultList[j].style.opacity='0.3';

の部分を

  resultList[j].parentNode.removeChild(resultList[j]);

としようとしてたのだけどなぜかうまくいかなかった。よく分からないから目立たなくするだけにした。(→id:os0xさんのコメントを参考にして直しました。ありがとうございます。)

わかったこと:

  1. 配列には正規表現でも文字列でもなんでも入れれる。配列に配列いれることすらできる。
  2. AutoPagerizeに対応するのは意外と簡単

こまったこと:

  1. なぜremoveChildがうまくいかなかったのか分からない
  2. getElementsByClassNameを使ってるからFirefox3以上じゃなきゃ動かない


けっこう長いもの書けたしよしとする。