jQuery で 右クリックと左クリックを判別

0 件のコメント

判別のポイントは次の通り。(要するに結論。)

  1. clickは無理。mouseup、mousedownのみ。
  2. event.whichを利用する
  3. ボタンと値の関係は次の通り
    真ん中
    123

IE8とIE9、Chromeではマウスイベントの button に設定される値が異なる!! まったく、これだからIEは…という気持ちを抑えつつ。。 とりあえず、event.button の具体的な値は下記の通り。 手元のブラウザしか試してないのであしからず…

mouseup 時、event.button の値
ブラウザ 真ん中
IE8142
IE9012
Chrome24012
Firefox18012

で、これくらいjQueryで拾ってくれよ…と思いながらjQueryのコードを読んでみると、 下記のようなコードを発見。

    // 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 ) ) );
    }
※jquery-1.9.0.jsを参照。

「"button"は正規化してないから使わないでね」 って、まぢか…めっちゃ button 使ってたよ…(@_@)
代わりに "which" プロパティが追加されているので、そっちを利用するみたい。

…もしかしなくても which がどちらかと言うと標準的な仕様?

ちなみに、clickイベント時、IE8 だと button プロパティが 0 にしかならないので使えない…

参考になりそうなサイト↓