当前位置:首页 > 日记 > 正文

JS中mouseup事件丢失的原因与解决办法

JS中mouseup事件丢失的原因与解决办法

前言

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

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

原因

目前发现两个原因:

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

解决办法

第一种情况

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

//在事件中e=e || window.event;pauseEvent(e);//阻止事件冒泡//不仅仅要stopPropagation,还要preventDefaultfunction 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,说明按下了左键。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如有疑问大家可以留言交流,谢谢大家对的支持。

相关文章

ppt2013怎么设置幻灯片母版每一页

ppt2013怎么设置幻灯片母版每一页

设置,方法,幻灯片,标题,母版,  在使用office2013制作PPT时,设置母版可以减少工作量,当时不常用PPT的朋友不懂什么办?下面小编马上就告诉大家ppt2013设置幻灯片母版每一页相同标题的方法。ppt2013设置幻灯片母版每一页相同标题的方法PPT相同…

JS出现失效的情况总结

JS出现失效的情况总结

情况,失效,电脑软件,JS,对于大前端来说,JS可谓是我们的神器,从页面的效果到数据的传递,再到后台的业务,无处不充斥着JS的身影,但是万能的JS也有贪玩的时候,某一时刻你就有可能发现你形影不离的JS突然间罢工了,这对我们前端来说绝对是头痛的事,作为…

Photoshop如何后期调出室内人像照

Photoshop如何后期调出室内人像照

照片,人像,柔和,后期,室内,人像后期:打造冷淡柔和人像,在调色的过程中,我们重要的一部分就是要分析原片,看原片值得不值得修图,然后在朝着我们想要的效果来处理,本教程主要分为分析原片、整体调节、完善形体、皮肤修饰、光影重塑、和最终完善6个…

基于react框架使用的一些细节要点

基于react框架使用的一些细节要点

框架使用,要点,细节,电脑软件,react,这篇文章主要是写关于学习react中的一些自己的思考:1.setState到底是同步的还是异步的?2.如何在子组件中改变父组件的state3.context的运用,避免“props传递地狱”4.组件类里有私有变量a,它到底改放在this.a…

word怎么设置页码

word怎么设置页码

设置,页码,电脑软件,word,一篇文章由多页组成,为了便于按序排列与查看,希望每页都有页码。使用word可以快速地为文档添加页码。下面小编就以office 2013word为例,具体操作步骤如下:1、切换到功能区中的“插入”选项卡,在“页眉和…

解决html-jquery/js引用外部时遇到

解决html-jquery/js引用外部时遇到

引用,看不,电脑软件,jquery,html,解决方法如下所示:<script type="text/javascript"> function showImg(url) { var frameid = 'frameimg' + Math.random(); window.img = '<img id="img" style="width: 100%;height: auto" sr…

怎么样在Word2007文档中制作流程图

怎么样在Word2007文档中制作流程图

流程图,文档,电脑软件,  在Word2007文档中,利用自选图形库提供的丰富的流程图形状,和连接符可以制作各种用途的流程图。以下是小编为您带来的关于在Word2007文档中制作流程图,希望对您有所帮助。在Word2007文档中制作流程图第1步,打开Word200…

怎样将PPT2010与OneNote 2010进行

怎样将PPT2010与OneNote 2010进行

链接,工作,电脑软件,OneNote,PPT,  PPT2010为您提供了最简单的方法来共享数据、 工作簿、 电子表格文档。 那么 PPT 2010 也可以和 OneNote 2010 的链接协同工作。以下是小编为您带来的关于将PPT 2010与OneNote 2010进行链接,希望对您有所…

AngularJS动态绑定ng-options的ng-

AngularJS动态绑定ng-options的ng-

实例代码,动态绑定,电脑软件,AngularJS,ng,什么情况下会需要动态绑定 ng-model 呢?若你的数据结构长得像是下面这样:var Classes = [{"Name" : "温度 " ,"Options" : [ "Cold" , "Hot" , "Normal" ]},{"Name" : "份量 " ,"O…

怎么在excel中做出聚光灯效果在exc

怎么在excel中做出聚光灯效果在exc

步骤,方法,聚光灯,效果,电脑软件,  核对数据是一个耗眼力的活,尤其是在大量数据的情况下,但如果能在核对的时候排除干扰,工作量会多。下面小编就教你怎么在excel中做出聚光灯效果。excel中做出聚光灯效果的步骤全选数据,然后,开始&mdash;&mdas…

PS菜单栏怎么添加颜色? PS自定义菜

PS菜单栏怎么添加颜色? PS自定义菜

命令,菜单栏,自定义菜单,教程,颜色,ps菜单栏中命令想要添加颜色,方便查找和使用,该怎么添加呢?下面我们就来看看详细的教程。软件名称:Adobe Photoshop 8.0 中文完整绿色破解版软件大小:150.1MB更新时间:2015-11-041、首先,点击上方的编辑。2、编…

excel 自动填充上行公式的方法步骤

excel 自动填充上行公式的方法步骤

方法,上行,自动填充,步骤,公式,  Excel中经常需要使用到函数公式进行计算,函数公式具体该如何自动填充上一行呢?小编整理了excel 自动填充上行公式的方法,希望对你有帮助!excel 自动填充上行公式的方法自动填充上行公式步骤1:打开需要处理的E…