hiratake55 の作業メモ

R, Javascript, Python, Linux and Hadoop

JavaScript で押されたマウスのボタンを調べる

イベントリスナで受け取ったマウスのボタンに対応する数字が FirefoxIE で違うことを今さら知った。

ボタン 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;

参考