一、起因及解决
因为很少应用除了click的监听事件,明天在应用mouseup时遇到一个坑,找了良久的bug。事件是这样的,我在写一个表情框,为了实现鼠标拖动表情框时,挪动到相应的地位。所以配合应用到了mousedown和mouseup和mosemove。
1.mosedown: 用于鼠标按下进行选中该表情区域为可拖动;
2.mosemove:鼠标挪动时,判断表情区域是否可拖动,,若可拖动,则开始容许拖动;
3.mouseup: 鼠标抬起该表情区域不可拖动;
然而我遇到的问题是,鼠标按下时,该表情区域能够拖动,然而鼠标松开时,表情区域还是能够依据我的鼠标地位进行拖动。
如下:
![上传中...]()
能够看到,我鼠标松开时,原本不能够挪动的,然而当初却能够挪动,起初钻研了一下,发现表情区域怎么被我选中变色了,而后查了一下应用css禁止选中,就失常了。如下:
解决:
// 表情盒子款式 .emojiBox { -webkit-user-select: none; -moz-user-select: none; -o-user-select: none; user-select: none; }
总结:其实mouseup并没有生效,而是你拖动时,鼠标选中了其余的元素,其实的话,鼠标即便松开,浏览器外部还是认为用户在复制文字,鼠标还是按下的状态,所以不会触发mouseup事件。