event.button用于识别鼠标按键,W3C标准值为0左键、1中键、2右键;旧IE用1/4/2映射,现主流项目可直接按标准使用;推荐在mousedown事件中判断,contextmenu事件专用于右键菜单处理。

event.button 是鼠标事件对象中的一个属性,用于识别用户按下的是鼠标的哪个按键。它返回一个数字值,不同浏览器在不同时期的兼容性略有差异,但现代标准(W3C)已统一规范,实际使用中需注意兼容旧版 IE 的写法。
标准值含义(W3C 规范)
在 mousedown、mouseup、click(注意:click 事件中 button 值可能固定为 0,推荐优先用 mousedown/up)等事件中:
- 0:左键(主按钮,最常用)
- 1:中键(滚轮按钮)
- 2:右键(上下文菜单按钮)
兼容旧版 IE 的注意事项
IE8 及更早版本不支持 event.button 的 W3C 值,而是用:
- 1 → 左键
- 4 → 中键
- 2 → 右键
因此,若需兼容极老浏览器,可做映射处理;但当前主流项目基本可忽略 IE8-,直接按 W3C 标准使用即可。
实用判断写法(推荐)
监听 mousedown 更可靠(因为 click 在右键/中键时通常不会触发,且 button 值可能被重置):
element.addEventListener('mousedown', function(e) {
if (e.button === 0) {
console.log('左键点击');
} else if (e.button === 1) {
console.log('中键点击(滚轮按下)');
} else if (e.button === 2) {
console.log('右键点击');
}
});
也可封装成工具函数:
-
isLeftClick(e)→e.button === 0 -
isMiddleClick(e)→e.button === 1 -
isRightClick(e)→e.button === 2
补充说明:与 contextmenu 事件的关系
右键点击通常会触发 contextmenu 事件,该事件的 button 值也是 2,但它专用于上下文菜单场景。如需拦截右键菜单,应结合 e.preventDefault() 使用,而非仅依赖 button 判断。

















