微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

javascript – 如何在mousedown上检测到右键按钮事件?

我正在更新/调试和扩展我的可拖动脚本的功能,我需要能够实现以下结果:
whatever.onRightMouseButtonMousedown = preventDefault();

我已经做了大量的研究,但是,我知道这是可以做到这一点,因为当我使用jquery-ui draggable时,它阻止了当你用鼠标右键拖动元素时拖动元素的能力.我想模仿这种能力,并学习它的工作原理,以便我可以在现在和将来根据需要实现它.

注意:请不要给我有关如何使用jquery或jquery-ui draggable的信息(我已经熟悉它),我想了解它们如何实现,或者如何可以实现对mousedown的检测.鼠标按钮,以便我可以通过鼠标右键来防止元素被破坏.

解决方法

通常当您有任何类型的鼠标事件时,您只需要使用鼠标即可.因此,传递给您的回调的事件有一个属性,您可以区分点击类型.

该数据通过事件数据的按钮属性传回.请参阅MDN找出什么值代表哪些数据.

因此,您不要禁用右键单击,而是仅为左点击启用您的功能.这是一个很差的例子:

element.onmousedown = function(eventData) {
  if (eventData.button === 1) {
      alert("From JS: the (left?) button is down!")
  }
}

jQuery中的等价物是:

$("div").mousedown(function(eventData) {
    if (eventData.which === 1) {
        alert("From JQuery: which=" + de.which)
    }
});

请注意,如果不使用jquery,返回的值将在浏览器之间不同. jQuery unifies the values across browsers,左边为1,中间为2,右为3:

element.onmousedown = function(eventData) {
   if (eventData.button === 0) {
     console.log("From JS: the (left?) button is down!")
   }
 }

 $("#element").ready(function() {
   $("div").mousedown(function(de) {
     console.log("From JQuery: which=" + de.which);
   });
 });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="element" style="width: 100px; height: 100px; background-color: blue" />

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


什么是深拷贝与浅拷贝?深拷贝与浅拷贝是js中处理对象或数据复制操作的两种方式。‌在聊深浅拷贝之前咱得了解一下js中的两种数据类型:
前言 今天复习了一些前端算法题,写到一两道比较有意思的题:重建二叉树、反向输出链表每个节点 题目 重建二叉树: 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列 {1,2,4,7,3,5,6,8} 和中序遍历序列 {
最近在看回JavaScript的面试题,this 指向问题是入坑前端必须了解的知识点,现在迎来了ES6+的时代,因为箭头函数的出现,所以感觉有必要对 this 问题梳理一下,所以刚好总结一下JavaScript中this指向的问题。
js如何实现弹出form提交表单?(图文+视频)
js怎么获取复选框选中的值
js如何实现倒计时跳转页面
如何用js控制图片放大缩小
JS怎么获取当前时间戳
JS如何判断对象是否为数组
JS怎么获取图片当前宽高