2

マウスを使用した右クリックと、物理キーボードでのコンテキスト メニュー キーの押下を区別するにはどうすればよいですか?

このコードを使用して、コンソールでイベントを印刷しようとしました

$('#'+inputId).bind('contextmenu', function(e) {
    console.log(e);
});

上記のコードの出力をいくつか取得しました-

マウスを使用した右クリックの場合は-

  1. ボタン: 2
  2. オリジナルイベント: マウスイベント
  3. タイプ:「コンテキストメニュー」
  4. どれ: 3

キーボードのコンテキスト メニュー キーを押すと、次のようになります。

  1. ボタン: 2
  2. オリジナルイベント: マウスイベント
  3. タイプ:「コンテキストメニュー」
  4. どれ: 3

物理キーボードで「コンテキスト メニュー キー」が押されたときにのみ何らかのアクションを実行したいと考えています。どうすればそれを達成できますか?

4

2 に答える 2

2

こんにちは、これは違いを捉えるのに役立ちます: Working Demo http://jsfiddle.net/pPnME/1/

Alienware - Chrome でこれをテストしました。右クリックすると右クリック アラートが表示され、キーボードではキーボード アラートが表示されます。

注意:whichプロパティに基づいてクリックを識別できます: http://api.jquery.com/event.which/

キー イベントまたはマウス イベントの場合、このプロパティは押された特定のキーまたはボタンを示します。

これが原因に当てはまることを願っています。:)

また、ショートカットを取得するために利用できるプラグインはほとんどありませんが、基本に固執し、両方のイベントを個別にキャプチャするだけの場合は、私が提供したデモを使用することをお勧めします:)

コード

/*
  1 = Left   Mousebutton
  2 = Centre Mousebutton
  3 = Right  Mousebutton
*/
$('input').mousedown(function(e) {
    if (e.which === 3) {
        alert('rightclick'); /* Right Mousebutton was clicked! */
    }
});
$('input').bind('contextmenu', function(e) {
    alert('keyboard yeah');
    //console.log(e);
});​
于 2012-07-12T10:23:46.623 に答える
0

キーが押されたかどうかもkeyPressedイベントであるかどうかを確認できます。

いいえの場合はマウスイベント、はいの場合はコンテキストメニューキー

編集:contextMenuのキーコードは93です

于 2012-07-12T10:16:13.347 に答える