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

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

もずはっく日記(2014年5月)

2014年5月30日

Bug-org 1008244 Regression in 29: "Enter" key on <select> element no longer fires a keypress event
初回投稿日時: 2014年05月30日10時34分32秒
カテゴリ: Events Mozilla Core Mozilla30 Mozilla31 Mozilla32 バグ修正
SNS: (list)

<select size="1">な要素にフォーカスがある時、Enterキーのkeypressイベントが発生しなくなっている、というバグです。

<select>要素は、non-printableキーを、keypressイベントではなく、keydownで処理するように変更しましたが、<select size="1">の場合、keypressで処理していた時と同様、ドロップダウンが閉じていて、何も処理しない場合でも、preventDefault()を呼び出していました。これが原因で、keypressイベントが発生していなかった訳です。

IEやChromeでは、Enterキーは、non-printableキーにも関わらず、keypressイベントが発生していることが分かりましたので、今後は、defaultPreventedを意識する場合は、その値がtrueの場合はkeydownで、falseの場合はkeypressで処理すべきのようです。

今回の修正では、単に、何もデフォルトアクションが発生しない場合に、preventDefault()を呼ばないようにして対応しています。

この修正は重要なので、Firefox 30以降全てで修正されています。

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

bug-org 1008244を含むエントリ