FC2ブログ
 

LotusNotesな日々IBM社のLotusNotesに関係する何かを日々語ってるようなきがしないでもないブログです。 

このページの記事目次 ( ← 2012年06月 → )

【JavaScript】クロスブラウザでEnterを検知するには

   ↑  2012/06/04 (月)  カテゴリー: JavaScript/CSS
今回は、クロスブラウザでEnterが押されたかを検知してみたいと思います。

結論から言えば、
安直に キーボードのキーを押した時に発生するイベント で Enter の KeyCode 13 を検知すれば良いのですが、

面倒なのは、
IMEが日本語入力(ひらがなや全角文字)時に
onkeydown属性, onkeypress属性, onkeyup属性のキーイベントは、
UA によって発生状況に差異があることです。

Internet Explorer、Safari、Chrome、Blink版Opera は
すべてのタイプに対して onkeydown属性と onkeyup属性を毎回正確にイベントを発生させます。
ただし、onkeypress属性のイベントは一切発生しません。
onkeydown属性で返ってくるキーコードが229かどうかを監視することで、
日本語入力モードがONであるかどうかを判別することはできますが、
入力中か全確定したか部分確定中かの判別は不可能だったりします。

Firefox では最初の入力時に onkeydown属性と onkeypress属性のイベントが一度だけ発生し、
入力内容の確定時に onkeypress属性が発生します。
onkeypress属性のイベントは一切発生しません。
つまり、onkeyup属性でenterキーのキーコード(13)を監視していれば、
日本語の変換が確定したかどうかを判別できます。

旧Presto版Operaは、ほぼ何も出来ないです。
よって、ほっときます。

ちなみに、onkeydown属性, onkeypress属性, onkeyup属性を同一の要素に併せて使用した場合、
イベントは onkeydown→onkeypress→onkeyupの順で動きます。

ここまでが前提です。
スポンサーサイト



(記事編集) http://mesosune.blog123.fc2.com/blog-entry-390.html

2012/06/04 | Comment (0) | Trackback (0) | HOME | ↑ ページ先頭へ |