Geckoの未確定文字列処理とWebアプリケーションとの相性は良くない
初回投稿日時: 2011年02月23日17時59分49秒
最終更新日時: 2011年02月23日18時01分23秒
カテゴリ: Firefox HTML Javascript Mozilla Core 雑談
SNS:
Tweet (list)
某氏から教えてもらった愚痴。
まーーーーーーーーたFirefoxのバグか!!(日本語入力関係)本当にいらっとするね!!Firefox滅びろ!!!!(暴言)
Firefoxでは、keypressイベントをセットしているtextareaで日本語入力中にoverflow-y: scroll;をつけたりけしたりすると文字が謎にコピペされるバグがあるようです。バグ報告したら直してくれるのかもしれないけど、Firefoxだしどうでもいいや。
ああもうイライラする。Firefoxのkeypress、keydownイベントで変なバグが。ChromeとIEなら許せるのにFirefoxだと異常に腹がたつのはなぜ!!どんだけ俺Firefox嫌いやねん!!あああFirefox絶滅しろー!!
DOMやHTMLの仕様でIMEの未確定文字列に関する挙動というのはほとんど定義されていなくて(例えば、inputElement.value = "foo";
で、未確定文字列があった場合、どうするの? という基本的な挙動が未定義だったり)、何をもってバグと言われているのか全く想像できませんが、まあ、Geckoの未確定文字列がある状態での挙動の不審さは自覚しております。
でも、Geckoは未確定文字列がある場合の挙動は不自然なので、極力、特に日本語環境では未確定文字列がある状態ではキーイベントを生成しないようにしています。これは、未確定文字列の有無を意識せずにWebアプリケーションの開発者がキーイベントのハンドリングをできるというように、という配慮でもあります。こうしておかないと、IMEを使うことがない言語圏の開発したWebアプリでのIMEの利用というのが絶望的になってしまうからです。
Gecko独自のcompositionイベントとかtextイベントを拾ってまで無理矢理処理しているのであれば、それはWebアプリケーションの開発者の自己責任としか言えない面はあります。ここに互換性とか求められてもこれから改善していくにあたって確実に変更を入れなくてはいけないところなので(まあキーイベントも実はDOM2には正式仕様がないイベントですが、これってWebアプリ開発者にはさすがに釈迦に説法かと思います、というか思いたいですが)、既にこれらのイベントをハンドリングしているWeb開発者の方はFx4の次のバージョンでの互換性にご注意ください。
現在は、次のアルファ版でDOM3のキーイベントやcompositionイベントまわりの下準備が終われば良いな、ぐらいの感覚で作業中です。レビュアーとあまりもめなければ、Gecko 2.0の次のコアではかなりこの辺はDOM3 Eventsに対応して、Webアプリケーションが作りやすくなるのではないかなと思います。