JavaScript - event.which 总是 return 1 用于悬停

JavaScript - event.which always return 1 for hovering

我想悬停鼠标左键单击同时<div>但是event.which 总是 returns 1 :

$('#element2').mouseenter(function(event) {
    switch (event.which) {
        case 1:  alert('Left Mouse pressed.');   break;
        case 2:  alert('Middle Mouse pressed.'); break;
        case 3:  alert('Right Mouse pressed.');  break;
        default: alert('You have a strange Mouse!');
    }
});

完整示例here on jsfiddle

A mousedown 有效,但 hover & mouseover & mouseenter 总是 return 1.

好吧,如果我将 event.which 替换为 event.buttons,它 return 在 Firefox 上是好的结果,但我发现 event.buttons 与其他浏览器不兼容。

=> 这是一个错误吗?对于我的问题,您有任何浏览器兼容的替代解决方案吗?谢谢

如果你想为所有浏览器处理它(即使我无法在 chrome 上复制问题),你可以使用全局标志并检查它:

$(document).on('mousedown', function(e){
    window.btnClicked = e.which;
}).on('mouseup', function(){
    window.btnClicked = undefined;
});

$('#element2').mouseenter(function(event) {
    switch (window.btnClicked) {
        case 1:  alert('Left Mouse pressed.');   break;
        case 2:  alert('Middle Mouse pressed.'); break;
        case 3:  alert('Right Mouse pressed.');  break;
        default: alert('You have a strange Mouse!');
    }
});