javascript - 检测鼠标左键按下

标签 javascript google-chrome key opera mouseevent

我讨厌由 W3C 和 MS 创建的这种乱七八糟的鼠标按钮!我想知道当我收到 mousedown 事件时是否按下了鼠标左键。

我用这个代码

// Return true if evt carries left mouse button press
function detectLeftButton(evt) {
  // W3C
  if (window.event == null) {
    return (evt.button == 0)
  }
  // IE
  else {
    return (evt.button == 1);
  }
}

但是,它在 Opera 和 Chrome 中不起作用,因为碰巧 window.event 也存在。

那我该怎么办?我有一些浏览器检测,但我们都知道它不能依赖于某些浏览器最近所做的所有屏蔽。如何可靠地检测鼠标左键?

最佳答案

更新的答案。以下将检测是否按下了左键且仅按下了鼠标左键:

function detectLeftButton(evt) {
    evt = evt || window.event;
    if ("buttons" in evt) {
        return evt.buttons == 1;
    }
    var button = evt.which || evt.button;
    return button == 1;
}

有关在 JavaScript 中处理鼠标事件的更多信息,请尝试 http://unixpapa.com/js/mouse.html

关于javascript - 检测鼠标左键按下,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3944122/

相关文章:

java - 自定义协议(protocol)处理程序未在 OSX 上传递参数

javascript - 无法在Chrome v.71 iOS 12+上打开Blob文件

python - 创建 csv 文件中特定行的字典

javascript - 使用 statusCode 处理 jQuery AJAX 失败

javascript - 谨防javascript的痛点要当心

javascript - 是否可以使用 HTML+CSS+JavaScript 设计 GUI 但它实际上会运行 python 脚本?

dictionary - 当给定一个与我知道存在的键等效的键时,以数组作为键的 Groovy 映射将返回 null

javascript - angularjs 监视另一个 Controller 产生的范围变量的变化

javascript - 您可以在 Android Chrome 上为 matchMedia 添加一个 javascript 回调监听器吗?

javascript - 如何在 nightwatch.js 中使用退格键从文本区域中删除文本