5

jQueryclickイベントの奇妙な動作を発見しました。キーボード ナビゲーションを使用している場合 (アクセシビリティの場合)、クリックは Enter または Space によって起動されます (使用している HTML 要素によって異なります)。

jsfiddle にテスト ページがあります。結果フレームでキーボードを使用してナビゲートしようとすると、さまざまな状況でクリックが起動されます。

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

jQueryのマニュアルで、クリックイベントの次の説明を見つけました:

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

正常ですか?通常の動作である場合、マウスクリックイベントのみを傍受する方法は?

4

1 に答える 1

9

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

注: アクセシビリティを最大限に高めるために、コンテンツ作成者は、カスタム コントロールのアクティベーション動作を定義する際に、デバイス固有のマウスダウンやマウスアップなどの他のポインティング デバイス イベント タイプではなく、クリック イベント タイプを使用することをお勧めします。クリック イベントの種類は、ポインター デバイス (マウスなど) に起源がありますが、その後の実装の拡張により、その関連付けを超えて拡張され、デバイスに依存しない要素のアクティブ化のイベントの種類と見なすことができます。

別の言い方をすれば、要素によっては、click() はデバイス固有のイベントではなく、本質的に論理的なイベントです。

本当にマウス入力のみに応答したい場合は、mousedown/up イベントを使用できますが、UI キーボードを個別にアクセスできるようにする必要があることに注意してください (たとえば、keydown/press/etc イベントを使用してキーボードを提供します)。同等)。

于 2012-04-30T08:11:40.290 に答える