favicon 表示関係をまとめる Greasemonkey script

AutoPagerize で読み込んだ部分に対する処理がまずかった部分があるので修正版うp。

前に firefox の設定を晒したときに ( http://d.hatena.ne.jp/janus_wel/20080814#1219560989 ) 書いた favicon 表示関係の Greasemonkey script が AutoPagerize に対応してないことに気づいたので対応させてみた。ついでにまとめてみちゃったりもした。 http://d.hatena.ne.jp/janus_wel/20080826#1219850336 で言ってた del.icio.us 新デザインにも対応したよ。っていうかまぁどういうデザインでもいいような書き方にしたんだけど。

http://www012.upp.so-net.ne.jp/legio/distribute/faviconize.user.js

先人は http://userscripts.org/scripts/show/3406 http://june29.jp/2006/10/18/favicon-greasemonkey/ かな ? いろいろな方がいじってるのでよくわからんことになってるんだけどそういうのも全部統合しちゃおうという感じでございますハイ。

使い方

上記 URL をクリックすると Greasemonkey のインストールダイアログが開くはずなのでそこで「インストール」をクリック。以後は対象ページで自動的に favicon が表示されるはず。対象ページはいまのところ以下の 3 つのみ。増える予定。いつかは未定。

技術的なはなし

名前でわかった方もいると思いますがぶっちゃけたはなし AutoPagerize のパクりです。

  1. ひとつのスクリプトでたくさんのページに対応したい
  2. ページごとに favicon を表示させたい anchor の位置が異なる
  3. その anchor は XPath で表示できる

つーあたりで「これ SITEINFO じゃね ?」「 SITEINFO だな。」「うん SITEINFO 。」みたいなノリでカホカホ打った結果がこれだよ !!

でまぁソースにも書いたんだけどまだ SITEINFO ( のようなもの ) の仕様が固まってないのでというか多くのページに対応できちゃえるような仕様を考える段階。それが終わってから wedata にデータベース作って登録していくという流れにしようかなと。 yahoo 検索にも対応できるような仕様てめんどくさそうなんだよなぁ… ( 対応しようとして yahoo 検索結果のソースを覗いて 5 秒ほど考えたあと見なかったことにした ) 。

あと favicon があるかどうかの処理を GM_xmlhttpRequest で HEAD method で要求して 200 が返ってきたらあると判断してるんだけど 200 が返ってくるにもかかわらず本体がない場合があって困る。 Content-Length で判別しようにも 0 じゃないのにない場合もあったりして無理だったし。ここらへん詳しい方いたら助言をお願いします。

あーあと存在確認のコスト ( ネットワーク負荷はたいしたことないと思うけど環境によって無視できないかもしれないしそもそも GM_xmlhttpRequest ってキャッシュが効くのかわかってないので ) が高いかもしれないのでそういった面やセキュリティ関係でこれはマズイ的なところがありましたらコメント欄にでもお願いします。

書き忘れてたけど処理をしたかどうかのしるしとして対象 anchor の class 属性に ' gm_faviconize ' という文字列を付加してます。なので他のスクリプトが動かなくなることもあるかもしれない。避けるべきだとは思うんだけどうまい方法が見つからなくてとりあえず妥協。ちょっと考える方向で。

そんな感じ。