faviconize ver. 0.30
モノは以下の場所に。
http://www012.upp.so-net.ne.jp/legio/distribute/faviconize.user.js
- http://userscripts.org/scripts/show/34035
- http://coderepos.org/share/browser/lang/javascript/userscripts/faviconize.user.js?
過去の記事は
- http://d.hatena.ne.jp/janus_wel/20080907/1220854935
- http://d.hatena.ne.jp/janus_wel/20080910/1221051896
そろそろバージョン管理とかすべきとか思ってるんだけど Coderepos に申請中なのでそれが通るまで待ちの状態。ハァーン。今回の変更点は
- favicon の存在確認後の処理を軽量化
- 先に background-image を仕込んだ img element をつっこんで存在確認後に background-image 無効化、src の書き換えを行うようにした。
- refactoring
- singleton, factory method, obserber の 3 pattern を使って見やすく処理をしやすくしてみた。
- javascript での singleton については http://la.ma.la/blog/diary_200508141140.htm を参考にした。ちょーわかりやすい。
- AutoPagerize SITEINFO の表示機能を追加
- AutoPagerize の pageElement がわかってないと faviconize の SITEINFO を書きづらいので追加。 addDocumentFilter で渡される AutoPagerize SITEINFO を出力してるだけ。
- するかしないかの toggle は ( 今のところ ) スクリプト内の DISPLAY_AUTOPAGERIZE_INFO_FLAG ( 真偽値 ) を変更することで可能。
- 出力先はエラーコンソール ( Ctrl + Shift + J ) 。
- 将来的に設定変更を容易にしたり出力先を変更したりできるようにとかは妄想中。
デザインパターン関連はちと自分でも忘れそうなので図を起こしてみた。わかりやすぅい。
- FaviconizeController ちう緑枠が singleton 。タブひとつにつきまずこいつのインスタンスが作られる。 factory method と observer 兼任。これはどこまで行ってもひとつ。
- タブへの新規読み込み / AutoPagerize による読み込み時に facroty method 部分で Faviconizer を量産する ( 灰色の線 ) 。 Faviconizer が anchor 1 つに対応する実際に処理するオブジェクト。
- Faviconizer 群は自分が表示しようとしてる favicon が存在するかどうか observer に確認する。なければ自分でチェックしてその結果を observer に報告 ( 紫の線 ) 。その後各自 favicon を仕込んで消滅する。