js判断鼠标左、中、右键哪个被点击的方法

yizhihongxing

要判断鼠标左、中、右键哪个被点击,一般有以下两种方法:

一、使用mousemove和mousedown事件判断

  1. 在document或者某个元素上绑定mousedown事件;
  2. 在mousedown事件回调中判断鼠标按下的键位,可以用event.button来获取,其中0表示左键,1表示中键,2表示右键;
  3. 如果鼠标左键/中键/右键被按下,就记录下来;
  4. 在mousemove事件回调中判断鼠标是否被拖动了,如果是就不做任何操作,否则就根据记录的结果执行对应的操作。

示例代码:

const mouseState = {left: false, middle: false, right: false};

document.addEventListener('mousedown', function(event) {
  switch (event.button) {
    case 0:
      mouseState.left = true;
      break;
    case 1:
      mouseState.middle = true;
      break;
    case 2:
      mouseState.right = true;
      break;
    default:
      break;
  }
});

document.addEventListener('mousemove', function(event) {
  if (event.buttons === 0) {
    if (mouseState.left) {
      // 左键被单击
      console.log('左键被单击');
    } else if (mouseState.middle) {
      // 中键被单击
      console.log('中键被单击');
    } else if (mouseState.right) {
      // 右键被单击
      console.log('右键被单击');
    }
    // 点击事件太短,可能被识别为双击,需要清空之前的状态
    mouseState.left = false;
    mouseState.middle = false;
    mouseState.right = false;
  }
});

二、使用contextmenu事件判断

  1. 在document或者某个元素上绑定contextmenu事件;
  2. 在contextmenu事件回调中取消默认行为;
  3. 在contextmenu事件回调中判断鼠标按下的键位,可以用event.button来获取,其中0表示左键,1表示中键,2表示右键;
  4. 根据键位执行相应的操作。

示例代码:

document.addEventListener('contextmenu', function(event) {
  event.preventDefault();
  switch (event.button) {
    case 0:
      // 左键
      console.log('左键被单击');
      break;
    case 1:
      // 中键
      console.log('中键被单击');
      break;
    case 2:
      // 右键
      console.log('右键被单击');
      break;
    default:
      break;
  }
});

以上两种方法都能判断鼠标左、中、右键哪个被点击,具体使用哪种方法取决于实际需求。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:js判断鼠标左、中、右键哪个被点击的方法 - Python技术站

(0)
上一篇 2023年6月27日
下一篇 2023年6月27日

相关文章

  • VC++ 自定义控件的建立及使用方法

    VC++自定义控件的建立及使用方法 在VC++中,我们可以通过MFC框架自定义控件,并将其添加至MFC应用程序或对话框中,使其得以使用。下面是自定义控件的建立及使用方法。 步骤一:创建MFC自定义控件 打开Visual Studio,创建一个MFC ActiveX控件项目。 在”添加组件向导”对话框中选择”ActiveX Control”,然后单击”Next…

    other 2023年6月27日
    00
  • 解决苹果手机Safari浏览器下 字体显示为 蓝色的 问题

    解决苹果手机Safari浏览器下 字体显示为 蓝色的 问题 苹果手机Safari浏览器下,有一些文本字体经常会出现蓝色的情况。这样的情况可能会影响用户的体验,并且让网站显得有些不专业。下面,我们就来解决这个问题。 问题分析 首先,需要明确的是,这个问题实际上是由于Safari浏览器内置的CSS样式表所导致的。在CSS样式表中,如果字体颜色没有显式指定,则默认…

    其他 2023年3月28日
    00
  • win10环境下搭建与连接vpn服务器

    Win10环境下搭建与连接VPN服务器的完整攻略 在Win10环境下,搭建和连接VPN服务器是非常常见的操作。本文将提供Win10环境下搭建和连接VPN服务器的完整攻略,包括以下步骤: 安装VPN服务器 配置VPN服务器 配置VPN客户端 连接VPN服务器 示例说明 步骤一:安装VPN服务器 在Win10环境下,安装VPN服务器的方法有很多种。其中,常用的方…

    other 2023年5月9日
    00
  • Java 类加载过程与类加载器详细介绍

    让我为您讲解一下 “Java 类加载过程与类加载器详细介绍” 的完整攻略。 什么是类加载? Java 语言是一种面向对象程序设计语言,其中最基本的组成单位是类。在 Java 语言中,类是由编译器编译 Java 代码后生成的字节码文件,这些字节码文件最终是由 Java 虚拟机来执行的。而在 Java 虚拟机的执行过程中,类加载器则负责将类文件加载到 JVM 中…

    other 2023年6月25日
    00
  • linux安全和加密篇(六)ssh隧道—动态端口转发

    Linux安全和加密篇(六)SSH隧道—动态端口转发攻略 在本攻略中,我们将详细讲解SSH隧道中的动态端口转发。我们将提供个示例,一个是使用Linux命令行,另一个是使用PuTTY SSH客户端。 动态端口转发的含义 动态端转发是SSH隧道的一种技术,它允许用户通过SSH连接到远程主机,并将本地计算机上的所有网络流量SSH隧道转发远程主机。这种技术可以帮助用…

    other 2023年5月8日
    00
  • 华硕(ASUS)路由器设置好后连接成功但上不了网现象的解决方法

    华硕(ASUS)路由器连接成功后无法上网的现象,可能是由于以下原因引起的: 路由器设置错误; 网络连接出现问题; 其他未知原因。 为了解决这个问题,你可以尝试以下方法: 步骤1: 确认路由器设置是否正确 在设置路由器之前,需确保路由器的配置是正确的。如果配置错误,则可能会遇到无法连接互联网的问题。以下是几个检查路由器是否已正确配置的方法: 检查路由器的安装向…

    other 2023年6月27日
    00
  • C语言数组快速入门详细讲解

    C语言数组快速入门详细讲解 什么是C语言数组 在C语言中,数组是一种特殊的变量类型,它可以保存多个同类型的值。它由若干个元素构成,每个元素都有一个用于标识其位置的唯一的下标,可以通过下标访问数组中的元素。 如何定义数组 定义一个数组需要指定以下三个内容: 数组的类型:数组中元素的数据类型。 数组的名字:用于标识数组的唯一标识符。 数组的长度:数组中元素的个数…

    other 2023年6月25日
    00
  • FreeRTOS进阶之空闲任务示例完全解析

    FreeRTOS进阶之空闲任务示例完全解析 本篇攻略介绍了如何使用FreeRTOS空闲任务(Idle Task),也称为空闲钩子(Idle Hook)来实现系统性能的优化和控制。 空闲任务是什么? 空闲任务(Idle Task)是 FreeRTOS 系统中的一种特殊任务,它是系统中唯一没有名称的任务,也是在所有任务执行完毕后处于运行状态的唯一任务。 空闲任务…

    other 2023年6月27日
    00
合作推广
合作推广
分享本页
返回顶部