Bug-org 543789 Implement DOM3 composition events
初回投稿日時: 2011年09月29日15時56分38秒
最終更新日時: 2011年09月29日16時04分14秒
カテゴリ: Mozilla9 バグ修正
SNS:
Tweet (list)
D3EのCompositionイベントの実装が終わりました。一点を除き、仕様通りという点ではGeckoが初の実装になっています(WebKitはcompositionstart
のdata
属性の実装が間違っていて、compositionupdate
が最初に発行されません)。
なお、問題のcompositionstart
のdata
属性の値は、compositionstart
イベントを発行する時点での選択範囲の値となっていて、リアルタイムの値ではありません。つまり、compositionstart
イベントに複数のハンドラがあって、そのうちの一つが選択範囲を変更したとしても、それ以降のハンドラで取得できるdata
属性値は、変更前のものです。こうしなければ、受け取ったcompositionstart
イベントをグローバル変数等に保存した場合の扱いが難しくなるので、このようになっています。
ちなみに、仕様通りに実装していない一点とは、compositionstart
イベントがキャンセル可能ではない、という点です。仕様書にはcompositionstart
イベントでpreventDefault()
を呼び出すと、IMEの始動をキャンセルできるとありますが、compositionstart
イベントはIMEに一度処理を渡して、始動したことが分かった時に発行するものですので、もうキャンセル不能な状況だからです。
また、locale
属性は実装はしていますが、Geckoから発行されるイベントでは常に空文字列が返ります。ですが、initCompositionEvent()
からは初期化可能で、またその値を取得することはできますので、他のブラウザとの互換性はできるだけ維持しています。将来的には実装すると思いますが、今のところ意義があまり無いと思われるので優先順位は低めです。
textinput
イベントの実装の方に、テストケースを用意しているので、ブラウザ間の動作の違いを確認するのに利用してみてください。