2

正如我所听说的,不同的浏览器会在mousedown事件发生时为鼠标按钮分配不同的键码值。我已经在 Chrome中尝试过这个并且它有效:

$('a').mousedown(function(f) {
    if (f.which == 2) {
        alert("You clicked the wheel")
    }
})​

但是,我担心某些浏览器将无法识别鼠标滚轮的键码为 2,并将其与其他鼠标按钮混淆,从而导致代码崩溃。我的问题是是否有任何方法可以重置这些值,以便我可以使用我提供的新值,以便所有浏览器都知道这些数字究竟代表什么。

4

2 回答 2

2

根据 W3C,它的值应该是:

  • 左键 - 0
  • 中间按钮 - 1
  • 右键 – 2

根据微软的说法,它的价值观应该是:

  • 左键 – 1
  • 中间按钮 - 4
  • 右键 – 2

但是你不必考虑它(跨浏览器问题),让它打开jQuery,在每个浏览器中which都会返回相同的结果

$('a').mousedown(function(e) {
    if( (e.which == 1) ) {
        alert("left button");
    }if( (e.which == 3) ) {
        alert("right button");
    }else if( (e.which == 2) ) {
        alert("middle button"); 
    }
})​;

演示。(在 IE、Chrome 和 FF 中测试)

于 2012-07-11T19:59:41.200 回答
1

使用 jQuery,2将代表鼠标滚轮或«中键单击按钮»。您不能更改这些值,但也不必更改,因为如果您得到的不是2on f.which,则很可能不是鼠标滚轮被击落。

两种鼠标事件模型,一种来自 W3C,一种来自 Microsoft浏览器(也包括 IE7 和 IE8)实现W3C 标准

更新

在 Javascript 中,由于两种不同的标准,鼠标事件按钮没有被规范化。实际上,jQuery 规范了鼠标事件上的 which:

// 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 ) ) );
}
于 2012-07-11T19:44:34.627 回答