2

mousedown私が聞いたように、さまざまなブラウザーがイベントのマウス ボタンにさまざまなキーコード値を割り当てます。Chromeでこれを試してみましたが、うまくいきました:

$('a').mousedown(function(f) {
    if (f.which == 2) {
        alert("You clicked the wheel")
    }
})​

ただし、マウスホイールのキーコードが 2 であることを認識できず、他のマウス ボタンと混同してコードがクラッシュするブラウザもあると思います。私の質問は、これらの値をリセットして、私が提供する新しい値を使用できるようにする方法があるかどうかです。これにより、すべてのブラウザーが数値が正確に何を表しているかを知ることができます。

4

2 に答える 2

2

W3C によると、その値は次のようになります。

  • 左ボタン – 0
  • 中ボタン – 1
  • 右ボタン – 2

Microsoft によると、その値は次のようになります。

  • 左ボタン – 1
  • 中ボタン – 4
  • 右ボタン – 2

ただし、それについて考える必要はありません (クロスブラウザーの問題)。オンのままにしjQueryておきます。すべてのブラウザーwhichで同じ結果が返されます。

$('a').mousedown(function(e) {
    if( (e.which == 1) ) {
        alert("left button");
    }if( (e.which == 3) ) {
        alert("right button");
    }else if( (e.which == 2) ) {
        alert("middle button"); 
    }
})​;

デモ。(IE、Chrome、および FF でテスト済み)

于 2012-07-11T19:59:41.200 に答える
1

jQueryを使用2すると、マウスホイールまたは«中クリックボタン»を表します。これらの値を変更することはできませんが、変更する必要はありません。2オン以外のものを取得した場合f.which、ダウンしたのはマウスホイールではない可能性が高いためです。

2つのマウスイベントモデルがあります。1つはW3Cによるもので、もう1つはMicrosoftによるものです。ブラウザ(IE7およびIE8も含む)はW3C標準を実装しています

アップデート

Javascriptでは、2つの異なる標準のため、マウスイベントボタンは正規化されていません。実際、jQueryはマウスイベントでwhichを正規化します。

// Add which for click: 1 === left; 2 === middle; 3 === right
// Note: button is not normalized, so don't use it
if ( !event.which && button !== undefined ) {
  event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) );
}
于 2012-07-11T19:44:34.627 に答える