Dec 02, 2005

Ez Sidebarの問題の続き

分離したサイドバーのウィンドウ内でidがreporterItemsBroadcasterなbroadcaster要素が破棄されると、タブを切り替えてもタイトルバーの内容が変わらないという問題が起こる、ということが判明した。ここが原因のようだ。

調べてみたら、これはFirefox 1.5で正しく表示できないサイトを報告するための「Reporter」が使用している要素らしい。処理が記述されている reporterOverlay.jsの中を見たら、一発だった。

Reporterはウィンドウを開いた時にプログレスリスナをgBrowserに対して設定する。このプログレスリスナはページ読み込みのタイミングで「ブラウザに読み込まれたURI」を調べ、Reporterでレポート可能な種類のページかどうかを判別し、先のbroadcasterにdisabled属性として指定する。これによってReporterのメニュー項目が必要に応じて有効化・無効化されるという寸法だ。

問題は、ウィンドウを閉じるときにこのリスナが登録解除されないところにあった。サイドバーのウィンドウが閉じて、broadcasterが消滅しても、このリスナは生存し続ける。ページが読み込まれると、存在しないbroadcasterを参照しようとしてエラーになる。その結果、他のプログレスリスナの処理までもがこいつのせいで中断されてしまって、ウィンドウのタイトルバーの内容が更新されないという問題につながる。

エントリを編集します。

wikieditish message: Ready to edit this entry.











拡張機能