蝸牛の歩み

蝸牛の如く,ゆっくりでも着実に前へ・・・

FirefoxのGreaseMonkey

今使っているFirefoxというブラウザには,ウェブページの体裁を閲覧者側でいじることのできるGreaseMonkey*1という機能拡張がある*2.例えば,鬱陶しい広告を非表示にしたりすることも比較的簡単にできちゃうのだ.
さて,私はメールで送られてくるURLをクリックするとポイントがたまるという小遣い稼ぎのプログラムに参加している.しかし,広告の中に埋もれているURLを探すのが面倒なのであるよ.そこでGreaseMonkeyでURLだけを抜き出せないかと考えてみた.幸い,このメールは通常のメーラではなくウェブメールで受け取っている.
まずはユーザースクリプトを作成するにはどうすればよいかのお勉強.Firefox まとめサイトだとか猿でも分かる GreaseMonkey + Platypus 超入門あたりを読むに,JavaScriptを知らないとつらそう.ただDive Into Greasemonkeyチュートリアルがあるので,見よう見まねでやってみることにする.やりたいことは,

  • リンクすべきURLを抽出
  • それ以外の部分を非表示にする

という2点.

   function _change(tag) {
      for(i in tag) {
         if(tag[i].href.match(/http:\/\/www\.example\.com\/clickweb\/icjmp\.asp\?to=(\d+)\&id=/))
         {
            var newBody = 
            '<html><head><title>My New Page</title></head><body>' +
            '<p><a href=\"'+tag[i]+'\">'+tag[i]+'</a></p>' +
            '</body></html>';

            window.addEventListener(
            'load', 
            function() { document.body.innerHTML = newBody; },
            true);
         }
      }
   }
})();

とりあえずこれで目的達成.
本当はこのURLを自動的に開いて欲しいんだけど,どうもうまくいかないのよね.

window.location.href = window.location.href.replace(tag[i]);

だと"CGIプログラムが不正です"と言われる.ウェブメールのメール表示用フレームに表示しようとしてるからだろうか.

window.getBrowser().addTab(tab[i]);

だと"window.getBrowser is not a function"と言われるし.JavaScriptを知らないのでさっぱりである.

*1:整備士という意味らしい

*2:はてなユーザであれば,はてなグリースモンキーのお世話になっている人もいるのでは?