Vue 鼠标事件合集,关于鼠标右键的处理方法(改写鼠标右键方法、自定义鼠标右键)

鼠标事件使用

复制代码
@mousedown="canvasDown($event)"按下

事件合集

复制代码
click       点击某个对象时触发
mousedown	鼠标按钮被按下时触发
mouseup	    鼠标按钮被松开时触发
mouseleave	当鼠标指针移出元素时触发
dblclick    双击时触发
mousemove	鼠标移动时触发,持续触发
mouseout	鼠标从某元素移开时触发
mouseover	鼠标移到某元素上时触发
mouseenter	鼠标移到某元素上时触发
contextmenu 右键触发

区分说明

复制代码
mouseover   鼠标指针移入事件所绑定的元素或其子元素,都会触发该事件  
mouseenter  鼠标指针移入事件所绑定的元素时,会触发该事件

如果一个元素没有子元素 ,那么该元素绑定mouseover或者mouseenter两种事件效果没有区别,鼠标每次移入元素时都只会触发一次事件;

如果绑定了mouseover事件的元素存在子元素 ,那么,每次移入该元素时都会触发一次事件(包括从外部移入 和从子元素移入),移入子元素时也会触发一次事件。

鼠标右键事件处理

方法1 contextmenu
复制代码
    document.addEventListener("contextmenu", function (e) {
      e.preventDefault(); //阻止右键默认行为
      console.log('右键');
      // do something
    });
方法2 mousedown
复制代码
    document.addEventListener("mousedown", function (e) {
      e.preventDefault();//此时阻止右键默认行为不生效,需要用方法1禁止该默认行为
      if (e.button == 0) {
        console.log("你按下了鼠标左键!");
      } else if (e.button == 1) {
        console.log("你按下了鼠标滚轮!");
      } else {
        console.log("您按下了鼠标右键!");
      }
    });

关于鼠标右键的更多应用

复制代码
<template>
  <div>
    <div class="btn" @click.right="handleClick('1')">右键</div>
    <div class="btn" @contextmenu="handleClick('2')">右键</div>
    <div class="btn" @contextmenu.prevent="handleClick('3')">
      右键 阻止默认行为
    </div>
    <div class="btn" @contextmenu="handleClicks($event)">右键 阻止默认行为</div>
    <div class="btn" id="btn">右键 来自监听</div>
  </div>
</template>

<script>
export default {
  mounted() {
    // 指定元素添加右键监听
    document
      .getElementById("btn")
      .addEventListener("contextmenu", function (e) {
        e.preventDefault(); //阻止右键默认行为
        console.log("右键");
      });
  },
  methods: {
    handleClick(key) {
      console.log("右键", key);
    },
    handleClicks(e) {
      e.preventDefault(); //阻止右键默认行为
      console.log("右键", e);
    },
  },
};
</script>
<style scoped>
.btn {
  height: 30px;
  border: 1px solid #000;
}
</style>
相关推荐
码上成长5 分钟前
Mapbox 围栏编辑踩过的几个坑:key 串了、形状炸了、icon 挡住绿点
前端·前端框架
SGAMERrain18 分钟前
做了一个免费的在线绘画网格工具 DrawGrid,聊聊一个小工具是怎么越做越完整的
前端
我家猫叫佩奇21 分钟前
🦭 厌倦了千篇一律的线性图标?Naive Icons 正式开源
前端·javascript·css
LEE40 分钟前
前端转型全栈 00:AI 时代该学哪些,不该学哪些
前端·后端
晚安日记wanna1 小时前
SSR 为什么不适合登录态从水合冲突到缓存串号
前端·react.js·面试
aixingpan1 小时前
aixingpan.cn API开发文档:api_docs_bichart_natalvssolararc2接口指南
前端·php
无限压榨切图仔1 小时前
一个优惠券需求改了三端,我才明白全栈不是多学一门语言
前端·后端
晚安日记wanna1 小时前
批量请求失败只弹一个 Toast面试官想听五层
前端·面试·架构
晚安日记wanna1 小时前
TS const 类型参数一道面试题的四层追问
前端·面试·typescript
用户921080262861 小时前
前端 Vue 专栏 09:Vue Router 与前端路由
前端