A Day in the Life

FUEL の Window/Tab 周りのハンドラは Firefox 3 では使うな

FUEL の Window/Tab 周りのハンドラは Firefox 3 では使うな

そういえば、はてなブックマーク Fireofox 拡張の 1.0.0 は使えば使うほど重くなる、という悲惨なバグがあったんだけど、その原因が FUEL だった、という。

FUEL とはひと言で言うと、『Firefox の解りにくいAPIを抽象化して、便利に使える、標準で提供されている抽象化フレームワーク』というもの。しかしながら、Window, Tab 周りのハンドラの参照解放が非常に難しい。

でもWindowやBrowserTabへのイベントリスナの登録はやっぱり問題あり。こういう風に「どの場合は問題なくて、どの場合は問題ありなのか」が場合によって異なるというのも非常に困る。

もちろんこの状況でも問題を回避する方法はあるけど、その方法の意味を理解するには、処理系の中で何が起こってるかが分かっている必要がある。no title

上記リンク先の、回避するコードを見てもらえば解ると思うが、イベント解放するのに大変気を遣わないとならないし、FUEL のハンドラをきっちりラップするコードを書かないと抜けが出る。API を集めて便利に使えるはずのコードをそもそもラップするとか意味解らない。

というわけで、FUEL を使わずに通常の DOM イベントモデルの作法に沿ってすべて書き直し…。すくなくとも Firefox 3 の FUEL で Window/Tab 周りのハンドラを使うと後々悲惨なことになります。FUEL も一部はとても便利に使えるが、一部はとても使いやすいとは言い難い状況なので、今後良くなっていくとよいですねー。

記事の一覧 >