2012-04-19 4 views
5

jQuery clickイベントの奇妙な動作が見つかりました。キーボードナビゲーション(アクセシビリティの場合)を使用している場合、クリックはEnterまたはSpace(使用するHTML要素によって異なります)によって開始されます。テストページがjsfiddleでありjQueryマウスの.click()がキーボードナビゲーションで起動しました

、あなたは結果フレームにキーボードを使って移動しよう、とクリックができ、様々な状況に発売された:jQueryのマニュアルで

http://jsfiddle.net/DCXhN/9/

、私はの説明の後を発見しましたclickイベント:

"クリックイベントは、マウスポインタが要素の上にあるときに要素に送信され、マウスボタンが押して離されます。すべてのHTML要素がこのイベントを受け取ることができます。

正常ですか?それが正常な動作であれば、マウスクリックイベントだけを傍受する方法は?

+0

はい、タブを使用してナビゲートしてからEnterキーを押すなどのキーボード操作は、クリックイベントのトリガーになります... – devnull69

+0

Wowのmousedown/mouseup動作へのキーボードショートカットです。このロジックがjQueryまたはブラウザレベルで定義されている場合は? –

+0

Windows上のすべての主要ブラウザは、その例ではデフォルトでこれを行います(IE9、FF、Ch、Sa)。また、イベント処理をjQueryからプレーンなjavascriptに変更したので、ブラウザのメジャーになるように振る舞いは同じです –

答えて

8

はい、これは正常です。 JQueryのドキュメントは正しいが、少し不完全である。詳細がありますWC3 site - 例えば:

注:最大のアクセシビリティのために、コンテンツ作成者は、むしろ、そのようなマウスダウンなどの他のポインティング・デバイスのイベントタイプよりも、カスタムコントロールのためのアクティベーションの動作を定義するときにクリックイベント・タイプを使用することをお勧めしますかマウスアップは、よりデバイス固有です。クリックイベントタイプはポインタデバイス(例えば、マウス)に由来するが、後続の実装強化により、その関連を超えて拡張され、要素起動のためのデバイスに依存しないイベントタイプとみなすことができる。

または、一部の要素では、click()は基本的にデバイス固有のイベントではなく論理イベントです。

マウス入力にしか反応しない場合は、mousedown/upイベントを使用できますが、UIキーボードを別途アクセス可能にする必要があることに注意してください(例:keydown/press/etcイベントを使用するキーボード相当品を提供する)。

関連する問題