JavaScript で押されたマウスのボタンを調べる
イベントリスナで受け取ったマウスのボタンに対応する数字が Firefox と IE で違うことを今さら知った。
ボタン | IE | Fx(evt.button) | Fx(evt.which) |
---|---|---|---|
何も押してない状態 | 0 | - | - |
左 | 1 | 0 | 1 |
右 | 2 | 2 | 3 |
右+左 | 3 | - | - |
中 | 4 | 1 | 2 |
中+左 | 5 | - | - |
中+右 | 6 | - | - |
中+右+左 | 7 | - | - |
IE は event.button。Firefox は引数の evt.button または evt.which で取得できる。
仕方ないから、IE の場合には三項演算子を使ってワンライナーで Firefox の evt.button モードにエミュレートするようにしておいた。
function mouseListener(evt){ var bt=(document.all)?(event.button==1?0:(event.button==4)?1:event.button):evt.button; if(bt==0){ alert('left'); } else if(bt==1){ alert('center'); } else if(bt==2){ alert('right'); } else; } document.onmousedown=mouseListener;
参考