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のコードを読んでみると、 下記のようなコードを発見。

3189
3190
3191
3192
3193
// 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 にしかならないので使えない…

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

最後に… このブログに興味を持っていただけた方は、 ぜひ 「Facebookページ に いいね!」または 「Twitter の フォロー」 お願いします!!