javascript中区分鼠标单击和拖动事件
在javascript中,一般的DOM元素如div,都有onmousedown、onmousemove、onmouseup这3个鼠标事件。
<div id="div1" onmousedown="down();" onmouseup="up();" onmousemove="move();"></div>
当鼠标在div1上移动或者按下左键拖动的时候,都会触发onmousemove事件。怎样区分这2种事件呢?怎样区分鼠标单击弹起和拖动后弹起呢?区分鼠标单击弹起和拖动后弹起。能够注冊onmousedown和onmouseup事件处理函数,在onmousedown中记录鼠标按下的位置,在onmouseup中记录鼠标弹起的位置,然后比較这2个位置的差距。假设距离差距不大,则是鼠标单击后弹起;假设距离相差较大,则是鼠标拖动后弹起。
以下介绍的是使用setTimeout来实现。
<div id="div1" onmousedown="down();" onmouseup="up();" onmousemove="move();" /> <script type="text/javascript">
var timmerHandle = null;
var isDrag = false; function down()
{
console.log("mouse down.");
//由于mouseDownFun每次都会调用的,在这里又一次初始化这个变量
isDrag = false; //延迟100ms
timmerHandle = setTimeout(setDragTrue,200);
} function setDragTrue()
{
isDrag = true;
} function move()
{
//能够使用isDrag来推断是移动还是拖动
} function up()
{ if (!isDrag)
{
//先把doMouseDownTimmer清除。不然200毫秒后setGragTrue方法还是会被调用的
clearTimeout(timmerHandle);
console.log("mouse up.");
}
else
{
isDrag = false;
console.log("draging over.");
}
}
</script>
使用setTimeout这样的是基于时间的做法,使用坐标是基于空间的做法。
javascript中区分鼠标单击和拖动事件的更多相关文章
- JavaScript中的鼠标滚轮事件详解
JavaScript中的鼠标滚轮事件详解/*Firefox注册事件*/ ~~~Firefox: addEventListener('DOMMouseScroll', handler, false)if ...
- JavaScript中,有三种常用的绑定事件的方法
要想让 JavaScript 对用户的操作作出响应,首先要对 DOM 元素绑定事件处理函数.所谓事件处理函数,就是处理用户操作的函数,不同的操作对应不同的名称. 在JavaScript中,有三种常用的 ...
- 让你高效的理解JavaScript中的同步、异步和事件循环
"同步请求","异步请求"相信这两词在程序猿的世界中频频出现,到底是词性的妖娆,还是撸代码的基础要求,下面直接分享本人学习的好东西,保证让你深入浅出,爽得不要不 ...
- JS - 解决鼠标单击、双击事件冲突问题(原生js实现)
由于鼠标双击时每一次触发双击事件都会引起两次单击事件和一次单击事件,原生的js不提供专门的双击事件. 因为业务原因,双击和单机都绑定了不同的业务,在双击的时候又触发了单机,影响了页面的正常显示 出现问 ...
- 【2016.3.30项目技术记录】]VS2010自动生成MFC单文档框架程序的修改:去除属性框,在CViewTree类中添加鼠标单击响应
转自http://blog.csdn.net/yanfeiouc2009/archive/2010/06/07/5653360.aspx 手头上有个东西要用到单文档,由于想省事,直接用VS2010做了 ...
- js区分鼠标单双击 阻止事件冒泡
function clickOrDblClick(obj) { count++; if (obj != undefined) { var rowStr = $.trim($(obj).find(&qu ...
- javascript 中 keyup、keypress和keydown事件
keyup.keypress和keydown事件都是有关于键盘的事件 1. keydown事件在键盘的键被按下的时候触发,keyup 事件在按键被释放的时候触发 keydown.keypress ...
- javaScript中获取鼠标位置的理解
获取鼠标坐标值的总结为了避免混淆知识点 通过<javaScript高级程序设计>查到这些 event.clientX event.clientY event.pageX event.pag ...
- js实现鼠标单击或者双击事件
// timer为全局变量 getClickEmail1(_type) { clearTimeout(this.timer); if (_type == 1) { if (event.detail = ...
随机推荐
- DateFormatUtil格式化时间
package org.xiaowu.json.demo; import java.util.Calendar; import java.util.Date; import org.apache.co ...
- NPM安装报错:WARN PACKAGE.JSON, NO REPOSITORY FIELDS
今天在安装npm包时遇到了这个错误,出现如下提示: npm WARN package.json xxx@0.0.0 No repository field. npm WARN package.json ...
- ios开发 Socket通信
Socket描述了一个IP.端口对.它简化了程序员的操作,知道对方的IP以及PORT就可以给对方发送消息,再由服务器端来处理发送的这些消息.所以,Socket一定包含了通信的双发,即客户端(Clien ...
- 【Docker】Docker管理平台 Rancher ---- 你应该学学Rancher是怎么做容器的管理的
Elasticsearch is a Lucene-based search engine developed by the open-source vendor, elastic. With pri ...
- sass的高级语法
1. 变量 sass允许使用变量,所有变量以$开头 2.引用父元素 & 这里 "&" 就代表是 a 3.继承 这样 class2 就 拥有了class1的所有属性 ...
- 编程算法 - 食物链 并查集 代码(C)
食物链 并查集 代码(C) 本文地址: http://blog.csdn.net/caroline_wendy 题目: 有N仅仅动物, 分别编号为1,2,...,N. 全部动物都属于A,B,C中的一种 ...
- Java Applet 基础
Java Applet 基础 Applet 是一种 Java 程序.它一般运行在支持 Java 的 Web 浏览器内.因为它有完整的 Java API支持,所以Applet 是一个全功能的 Java ...
- Odoo 8,9,10 制造领料、入库 实践
Odoo12 已经支持在 同一个仓库内,使用 投入/产品 库位, 不必采用本文的方法 Odoo 设计在 仓库/库存 进行生产,也就是 在 仓库/库存 领料,产出, 例如 如果要实现一般 ...
- C#开发--FTP操作方法管理
1.整理简化了下C#的ftp操作,方便使用 1.支持创建多级目录 2.批量删除 3.整个目录上传 4.整个目录删除 5.整个目录下载 2.调用方法展示, var ftp ...
- JQuery加载并解析XML
转自http://blog.csdn.net/pan_junbiao/article/details/7441003,致谢! 1.简述 XML(eXtensible Markup Language)即 ...