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

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

もずはっく日記(2012年7月)

2012年7月11日

Bug-org 769190 Should change the acceptable value of the argument of getModifierState()
初回投稿日時: 2012年07月11日23時11分22秒
最終更新日時: 2012年07月11日23時11分46秒
カテゴリ: IE Javascript Mozilla Core Mozilla15 Mozilla16 バグ修正
SNS: (list)

先日、Firefox 15でKeyboardEvent.getModifierState()と、MouseEvent.getModifierState()を実装しましたが、そのパラメータのモディファイアキーの名前が、最新のDOM Level 3 Eventsのドラフトで変更されてしまいました。このバグは、それにあわせて修正しようというものです。

変わったキー名は二つで、"Scroll"が、"ScrollLock"に、"Win"が、"OS"になりました。

もちろん、既にリリースされているIE9では、"Scroll"と、"Win"で動作しますが、Geckoではこれらのキー名を引数に渡しても、常にfalseが返るようになっています。

IE9と互換性を持たせつつ、これらのキーの状態を調べたい場合は、

if (event.getModifierState("ScrollLock") || event.getModifierState("Scroll")) {
  // in case ScrollLock is locked
}

としたり、

if (event.getModifierState("OS") || event.getModifierState("Win")) {
  // in case Win key is pressed
}

とすることができます。文字列でキー名を指定するというのは効率は良くないですけど、変化の激しいWebの仕様としては好ましいかもしれません。

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

bug-org 769190を含むエントリ