判別のポイントは次の通り。(要するに結論。)
- clickは無理。mouseup、mousedownのみ。
- event.whichを利用する
- ボタンと値の関係は次の通り
左 真ん中 右 1 2 3
IE8とIE9、Chromeではマウスイベントの button に設定される値が異なる!! まったく、これだからIEは…という気持ちを抑えつつ。。 とりあえず、event.button の具体的な値は下記の通り。 手元のブラウザしか試してないのであしからず…
mouseup 時、event.button の値
ブラウザ | 左 | 真ん中 | 右 |
---|---|---|---|
IE8 | 1 | 4 | 2 |
IE9 | 0 | 1 | 2 |
Chrome24 | 0 | 1 | 2 |
Firefox18 | 0 | 1 | 2 |
で、これくらい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 の フォロー」 お願いします!!