この日記はMozillaのプロダクトへの貢献者としての私の成果を中心に、気になったバグやWeb界隈の話題について書いていますが、 断り書きがある場合を除き、いかなる団体のオフィシャルな見解ではありません。あくまでも個人的なものです。 Mozilla Foundation、Mozilla Corporation、及び関連企業の公式情報ではないことに注意してください。

現在、XHTML 1.0 (もどき)から、HTML5なコンテンツに修正中です。古い日記は修正が完了していませんので表示が崩れます。 順次、修正していく予定ですのでしばらくお待ちください。

もずはっく日記(2004年9月)

2004年9月30日

Bug 3961 [FAYT] 日本語でFAYTが出来ない
初回投稿日時: 2004年09月30日13時38分35秒
カテゴリ: Firefox
SNS: (list)

本家の方でJungshik Shinに召喚されたのでソースコードを検証してみた。 ところが今の設計の駄目っぷりを思い知らされただけだった。

まず、現在のFind Toolbarを利用した検索には二種類の処理系等がある。

ひとつはCtrl+Fによる通常検索のモード。 これは、見た目通り、Find Toolbarが入力を受け付け、ボタンを押すことによってJavascript(browser.js)上で処理を行っている。

それに対して、もうひとつのモード、FAYT専用モードが問題である。 こちらは、Find Toolbarは形骸にすぎない。Find Toolbarは今までのステータスバーと何ら変わりの無い、表示するためだけのシロモノである。 どういうことかと言うと、FAYTの入力を受け付けているのはbrowserウインドウそのものである。browserウインドウでkeypressイベントが発生すると、その時に押されたキーコードと、それまでに入力されていた文字列とを合成し、新たな検索文字列とする。 この文字列をFind Toolbarにセットしているだけである。

ところが、keypressイベントではIMEの文字は受け取れない。 何故ならキーが押されることと、実際の入力があったこととは関係無いからだ。 ここで、Windowsプログラミングに詳しい人ならWM_CHARの様にイベントを生成すれば解決するかと思う人もいるかもしれないが、この手法では絶対に未確定文字列の処理もできないことにも注意が必要だ。 つまり、現在のFind Toolbarの実装方法でIMEの入力を受け付けていないのはバグであるというよりも、そもそも不可能な設計なのである。

国際化問題に対して正常な理解があればFind Toolbarはバックアウトされるべきである。 しかし、Mozilla Foundationがあの目玉機能を諦めるとは考えにくい。 CJKユーザには不便な日々が延々と続きそうな気がする。

関連するかもしれないエントリ

bug 3961を含むエントリ