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

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

もずはっく日記(2015年4月)

2015年4月17日

Bug-org 1124608 Support D3E EventModifierInit
初回投稿日時: 2015年04月17日12時28分48秒
最終更新日時: 2015年04月18日00時10分22秒
カテゴリ: Events Mozilla Core Mozilla40 バグ修正
SNS: (list)

D3Eでは、各種イベントを生成する時に、dictionaryを用いた、簡単な記述で互換性の問題も発生しにくいコンストラクタが提案されています。基本的にはこのdictionaryは生成後にそのイベントの属性名になるものをキーとして値を設定します。例えば、

var keyboardEvent = new KeyboardEvent("keydown",
  { key: "Tab", code: "Tab", keyCode: 9, shiftKey: true });

しかし、D3EではKeyboardEvent.getModifierState()や、MouseEvent.getModifierState()で、キーとして定義されている全てのモディファイアの状態や、Accelといった仮想モディファイアも状態を検査できるようになりました。しかし、逆に言うと、これらが属性という形式をとっていないため、Javascriptがイベントを生成する時に初期化する方法がありませんでした。

そこで、EventModifierInitが新たに提案され、今回はこれの実験実装を行いました。これにより、例えば、CapsLockと、OStrueにしたい場合、以下のように記述できます。

var keyboardEvent = new KeyboardEvent("keydown",
  { key: "Tab", code: "Tab", keyCode: 9,
    modifierCapsLock: true, modifierOS: true }

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

bug-org 1124608を含むエントリ