さて前回、gBrowser.addProgressListener関数で躓いてしまいましたが、ネットを丹念に調べて解説してくれてるページを見つけました。
拡張機能の例: ページが切り替わったタイミングを知る(せりか式)
いや〜、もう俺のやりたいことそのまんまじゃないっすか。 有難いねえ。 で、ド素人の俺でもこのページで仕組みが分かったんで詳細は割愛w この後Dog Earsのスクリプトに何をすればいいかって言うと、
- "onLocationChange"関数の実装として、アイコンを切り替える関数を呼び出す。
- "onLocationChange"関数を含むリスナー関数群のリスト変数を定義する。
- Load関数内で、addProgressListener"関数を使ってリスナー関数リストを登録する。
- 同じくUnload関数内で、"removeProgressListener"関数を使ってリスナー関数リストを削除する。
細かい部分はさておき、この仕組みがちゃんと組み込めるかテスト。 Dog EarsでもTabooと同じく、アイコンに対するパラメータを真偽値で指定することで切り替えを実現しているので、"onLocationChange"関数に問答無用でアイコンが「マークありまへん」になるように書いてみました。 テスト用のFirefoxプロファイルを作りインストール。 タブを2つ開きそれぞれ別のページを読み込んでおきます。 タブAのページにマークを追加し、ツールバーアイコンを「マークありまっせ」の状態にセット。 そしてタブBに切り替え・・・・いやっほう!見事「マークありまへん」アイコンに変わった!!
この様子をFlashで公開しようと思い、改造前後でキャプチャしてみて思わぬ発見。 使ってるキャプチャソフトは取り込んだものを1コマずつ確認・編集できるのですが、改造前のある1コマ、ちょうどタブを切り替えてもツールバーアイコンが変わらないよ〜っていう見せ場で、一瞬だけアイコンが変化していました。 この直前のエントリがそのFlashです。 シークバーを使ってうまくストップできれば、ご覧になれると思います。
え〜〜〜!前提総崩れ。 タブを切り替える=Location変化のイベントはハンドリングしてないと思ってたのに、しっかりやってるってことですよね。 う〜ん・・・またコードを良く見直さなくちゃ。 でも、やっぱ今日はここまでw

