同时抓取用户的左右点击

grab both the right and the left clicks of a user simultaneously

所以我的问题是,

我想知道是否有一种方法可以检测用户是否同时右击和左击并在 jQuery 中执行操作。似乎代码在鼠标事件中一次只能检测一次右键单击或一次左键单击。

更新

感谢您的回答,我最终决定在我尝试实现该功能时,该功能对用户来说太时髦了。希望这些答案也能帮助到其他人。

像这样。它使用 ES2015.

let left = false;

document.addEventListener('mousedown', e => {
    if (e.button === 0) {
        left = true;
    } else if (e.button === 2 && left) {
       fireYourFunctionForTwoButtons();
    }
})

document.addEventListener('mouseup', e => {
    if (e.button === 0) {
        left = false;
    }
});

您可以创建变量来单独保存每个鼠标按钮的状态,并使用它来确定两个按钮是否按下:

window.isLeftMouseDown = false;
window.isRightMouseDown = false;

$(document).on('mousedown', function(e) {
  if (e.which == 1)
    window.isLeftMouseDown = true;
  else if (e.which == 3)
    window.isRightMouseDown = true;

  if (window.isLeftMouseDown && window.isRightMouseDown) {
    console.log('both down');
  }
});

$(document).on('mouseup', function(e) {
  if (e.which == 1)
    window.isLeftMouseDown = false;
  else if (e.which == 3)
    window.isRightMouseDown = false;
});

https://jsfiddle.net/2j151tpt/

我的建议是基于两次连续点击之间经过的时间(以毫秒为单位):

$(function () {
  $('#btn').data('last-left-click', 0).on('mousedown contextmenu', function (e) {
    var nowTime = Date.now();
    if (e.which == 1) {
      $(this).data('last-left-click', nowTime);
    }
    if (e.which == 3) {
      // if less then 300 milliseconds....
      if ((nowTime - $(this).data('last-left-click')) < 300) {
        console.log('Both left and right clicked in sequence in less then 300 milliseconds!');
      }
      $(this).data('last-left-click', 0);
    }
  });
});
<script src="https://code.jquery.com/jquery-1.12.4.min.js"></script>

<button id="btn">Click Me</button>