这篇文章主要跟大家介绍了关于Javascript中mouseup事件丢失的原因与解决办法的相关资料,文中给出详细的示例代码供大家参考学习,需要的朋友们下面跟着小编一起来学习学习吧。

前言

当实现类似Excel选中区域的功能时,经常出现 mouseup 事件丢失的情况,由于缺少了 mouseup 事件,导致一个完整的操作无法进行。

如果你是想进行拖拽移动操作,也可以参考本文。

原因

目前发现两个原因:触发了浏览器的 drag 操作,导致mouseup丢失。

由于鼠标离开了操作的区域,触发了mouseleave导致mouseup丢失。

解决办法

第一种情况

通过执行下面的代码阻止系统默认的操作来防止触发 drag 操作://在事件中

e=e || window.event;

pauseEvent(e);

//阻止事件冒泡

//不仅仅要stopPropagation,还要preventDefault

function pauseEvent(e){

if(e.stopPropagation) e.stopPropagation();

if(e.preventDefault) e.preventDefault();

e.cancelBubble=true;

e.returnValue=false;

return false;

}

通过对事件调用pauseEvent方法可以防止出现drag操作,因此在区域内可以避免mouseup丢失。即使你想实现的本来就是 drag 操作,也可以通过创建跟随鼠标移动的dom元素实现效果。

第二种情况

由于鼠标移到了区域外,触发了 mouseleave 操作,因此在这种情况下要监听 mouseleave 操作,当触发该操作时可以停止或者还原状态。

特别注意的地方

当处理鼠标事件时,可以还要考虑是否要控制按下那个键时才允许操作。

Mouse事件中有一个 buttons 属性,该值标示鼠标按下了一个或者多个按键,如果按下的键为多个,值则为多个:

0 : 没有按键或者是没有初始化

1 : 鼠标左键

2 : 鼠标右键

4 : 鼠标滚轮或者是中键

8 : 第四按键 (通常是“浏览器后退”按键)

16 : 第五按键 (通常是“浏览器前进”)

多个值的时候,相当于进行|操作,即鼠标左右键同时按下时1|2=3。判断是否按下左键可以用value&1!=0进行,例如左右键同时按下时3&1!=0是true,说明按下了左键。

总结

mouseup 左键_javascript中mouseup事件丢失的原因与解决办法相关推荐

  1. Session莫名丢失的原因及解决办法[转载]

    Asp.net 默认配置下,Session莫名丢失的原因及解决办法 正常操作情况下Session会无故丢失.因为程序是在不停的被操作,排除Session超时的可能.另外,Session超时时间被设定成 ...

  2. Frameset导致Cookies和Session丢失的原因及解决办法

    参考资料 1 Frameset导致Cookies和Session丢失的原因及解决办法 http://blog.csdn.net/zl_c/article/details/1742775  2 使用fr ...

  3. 微服务架构中的雪崩问题产生原因及解决办法

    微服务架构中的雪崩问题产生原因及解决办法 参考文章: (1)微服务架构中的雪崩问题产生原因及解决办法 (2)https://www.cnblogs.com/panchanggui/p/10330924 ...

  4. Hyper-V下的Linux虚拟机网卡丢失问题原因及解决办法

    Hyper-V下的Linux虚拟机网卡丢失问题原因及解决办法 虚拟化大势所趋 公司推行了虚拟化,全部用的是Microsoft Windows 2008 R2 Enterprise with Hyper ...

  5. sketch颜色和html颜色不一致,photoshop和sketch中图片色彩不一致的原因和解决办法...

    静电说:之前有用户提过类似的问题,他发现在photoshop中图片的色彩和sketch中图片的色彩不一致.下面看看静电翻译的一篇 bohemiancoding团队发表的博文,详细阐述了这种现象产生的原 ...

  6. python中txt文件读取错误原因以及解决办法‘gbk‘ codec can‘t decode byte 0x80 in position 2: illegal multibyte sequence

    python的读写文件操作时,有时候会出现一些小问题,详细如下,(原因在前面,解决办法在文末). 读取txt文件时出现错误反馈如下: Traceback (most recent call last) ...

  7. uni-app浏览器、iPhone手机显示轮播图,微信、支付宝小程序中不显示的错误原因及解决办法

    源码: index.vue: <template><view class="main"><swiper :indicator-dots="t ...

  8. Python学习中的无效语法常见原因和解决办法分析

    Python以其简单的语法而闻名.然而,当您第一次学习Python时,或者当您具有另一种编程语言的坚实背景时,您可能会遇到一些Python不允许的事情.如果您在尝试运行Python代码时收到过Synt ...

  9. SqlServer2000中作业无法删除的原因和解决办法

    错误信息描述为:错误14274:无法添加.更新或删除从MSX服务器上发起的作业(或其步骤或调度). 原来以为是应为表之间关联,删除三张记录表,后来发现没有.可能那是2005上会引起的问题. 后查看相关 ...

最新文章

  1. PyTorch 深度剖析:如何保存和加载PyTorch模型?
  2. 使用Python,将字符串的首字母变为大写,其余都变为小写
  3. django model
  4. python面向对象编程138讲_Python面向对象编程简单讲解
  5. java 配置jmstemplate_Spring JMSTemplate 与 JMS 原生API比较
  6. pytorch 中的 split
  7. 在SQL SERVER里面用命令查包含某字段的表
  8. 不符合c语言表达式,C语言的基本语法有哪些?,已知各变量的类型说明如下,则以下不符合C语言语法的表达式是...
  9. JB的Python之旅-爬虫篇--requestsScrapy
  10. itextpdf生成pdf,html转pdf,pdf转图片
  11. oracle 19c pdb cdb,12c、19c 从 no-cdb升级到pdb步骤
  12. Rockcip Android多媒体框架 Codec2
  13. Java中Date时区的转换
  14. 小米摄像头 rtmp_如何使用外部摄像头进行Amazon Live
  15. 一文搞懂MySQL索引(清晰明了)
  16. 肾有多好人就有多年轻—男女通用
  17. 香港特首到访阿里_她是来看几个年轻人的……
  18. CH343芯片应用—硬件设计指南
  19. 计算机网络(2)--- 因特网的发展阶段与组织
  20. MFC 画笔功能实现

热门文章

  1. win10计算机系统优化设置,win10系统优化系统的详细办法
  2. 无尽包围html5游戏在线玩,小团体激发潜能小游戏突破自我
  3. 为什么有了接口还要增加一层抽象类?
  4. Error running tomcat8 Address localhost:1099 is already in use 错误解决
  5. php7 ast,PHP7 的抽象语法树(AST)带来的变化
  6. mysql/sqlyog导入txt文件的方法
  7. Docker exec 命令执行出错, 显示 the input device is not aTTY 的解决办法
  8. java实时更新权限_java – 如何使用Spring Security重新加载用户更新的权限
  9. php数组在golang,go语言数据类型-数组(array)
  10. php密码安全检测,php – 密码安全随机字符串函数