Firefoxはdocumentにclickイベントリスナーを登録すれば中・右クリックも捕捉できる
Firefoxのclickイベントは、イベントリスナーの登録先がdocumentか要素かによって、中・右クリックも捕捉するかどうかが変わる。
/* Firefox 3.6.13 */ document.addEventListener('click', function (e) { alert(e.button); /* 左クリック、中クリック、右クリック すべて拾う */ }, false); document.body.addEventListener('click', function (e) { alert(e.button); /* 左クリックしか拾わない */ }, false);
他のブラウザではどうなるかも調べてみたけど、Firefoxのように登録ノードによって違いがでるブラウザはなかった。
document | 要素ノード | |||||
---|---|---|---|---|---|---|
左 | 中 | 右 | 左 | 中 | 右 | |
IE8 | ○ | ○ | × | ○ | ○ | × |
Firefox 3.6 | ○ | ○ | ○ | ○ | × | × |
Chrome 8.0 | ○ | ○ | × | ○ | ○ | × |
Chrome 9.0 | ○ | × | × | ○ | × | × |
Opera 11.0 | ○ | × | × | ○ | × | × |
- 要素ノードはdiv、a、input[type="button"]で試したが、これらのブラウザでは違いはなかった。
- IE8は標準モードでもQuirksモードでも違いはなかった。
- IE8はボタンの種類に関わらずevent.buttonは常に0だった。
mousedownイベントならどのブラウザでも3種類のクリックを補足でき、IE8のevent.buttonもボタンの種類によって違う値を返した(値は他のブラウザとは異なる*1)。
document | 要素ノード | |||||
---|---|---|---|---|---|---|
左 | 中 | 右 | 左 | 中 | 右 | |
IE8 | ○ | ○ | ○ | ○ | ○ | ○ |
Firefox 3.6 | ○ | ○ | ○ | ○ | ○ | ○ |
Chrome 8.0 | ○ | ○ | ○ | ○ | ○ | ○ |
Opera 11.0 | ○ | ○ | ○ | ○ | ○ | ○ |