キーボード イベントとマウス イベントの両方をキャプチャする Javascript コードを作成しました。アイデアは、ページ上の要素 (TD) をタップするたびに選択され (基本的にはクラスを変更して強調表示されるだけです)、矢印キーを使用して選択されている要素を変更できるというものです。
ただし、携帯電話 (Gingerbread を実行) の標準の Android ブラウザーでこのページを表示すると、ブラウザーはすべてのイベントを消費し、ページが機能しなくなります。具体的には、ページ上のアイテムをタップすると、テキストを囲むオレンジ色の丸いボックスが表示され、私のページはイベントを取得しません。上下の矢印キーを押すと、ボックスが移動しますが、私のコードはこれを行っていません。ブラウザが行っているようです。
何が起こっているのかは、ブラウザが何らかの形で「役立つ」ようにしようとしていると思われます。私が探しているのは、ブラウザーにこれを行わないようにヒントを与える方法、またはこの動作を無効にする方法です。
更新: これは、私が見ている問題のより具体的な例です。さまざまなキーに対応するキーコードを確認するためだけに、次の単純なリスナーを設定しました。
document.onkeydown = function(evt) {
alert(evt.which)
}
ここで、カーソルが TextField にあり、携帯電話の Enter キーを押すと、アラートがポップアップして「13」と表示されます。しかし、フォーカスを別の要素 (この場合は TD) に移動すると、Enterキーを押しても何も起こりません。
更新: 半ダースの異なるブラウザーをインストールしようとしました。それらはすべて矢印キー (これはデバイス上の物理キーボードです) を飲み込み、実際に使用できるようにイベントを Web アプリに渡す代わりに、それらを使用して画面をスクロールしたり、ページ上のさまざまな要素を強調表示したりするようです。彼らは私がやりたいことをするために!これを行わないブラウザは Firefox だけです。