JS的鼠標(biāo)監(jiān)聽mouseup鼠標(biāo)抬起失效原因及解決
一、起因及解決
由于很少使用除了click的監(jiān)聽事件,今天在使用mouseup時(shí)遇到一個(gè)坑,找了好久的bug。事情是這樣的,我在寫一個(gè)表情框,為了實(shí)現(xiàn)鼠標(biāo)拖動(dòng)表情框時(shí),移動(dòng)到相應(yīng)的位置。所以配合使用到了mousedown和mouseup和mosemove。
1.mosedown: 用于鼠標(biāo)按下進(jìn)行選中該表情區(qū)域?yàn)榭赏蟿?dòng);
2.mosemove:鼠標(biāo)移動(dòng)時(shí),判斷表情區(qū)域是否可拖動(dòng),,若可拖動(dòng),則開始允許拖動(dòng);
3.mouseup: 鼠標(biāo)抬起該表情區(qū)域不可拖動(dòng);
但是我遇到的問題是,鼠標(biāo)按下時(shí),該表情區(qū)域可以拖動(dòng),但是鼠標(biāo)松開時(shí),表情區(qū)域還是可以根據(jù)我的鼠標(biāo)位置進(jìn)行拖動(dòng)。
如下:
![上傳中...]()
可以看到,我鼠標(biāo)松開時(shí),本來不可以移動(dòng)的,但是現(xiàn)在卻可以移動(dòng),后來研究了一下,發(fā)現(xiàn)表情區(qū)域怎么被我選中變色了,然后查了一下使用css禁止選中,就正常了。如下:
解決:
// 表情盒子樣式 .emojiBox { -webkit-user-select: none; -moz-user-select: none; -o-user-select: none; user-select: none; }
總結(jié):
其實(shí)mouseup并沒有失效,而是你拖動(dòng)時(shí),鼠標(biāo)選中了其他的元素,其實(shí)的話,鼠標(biāo)即使松開,瀏覽器內(nèi)部還是認(rèn)為用戶在復(fù)制文字,鼠標(biāo)還是按下的狀態(tài),所以不會(huì)觸發(fā)mouseup事件。
以上就是JS的鼠標(biāo)監(jiān)聽:mouseup(鼠標(biāo)抬起)失效的詳細(xì)內(nèi)容,更多關(guān)于JS的鼠標(biāo)監(jiān)聽:mouseup(鼠標(biāo)抬起)失效的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
JavaScript子類用Object.getPrototypeOf去調(diào)用父類方法解析
這篇文章主要介紹了JavaScript子類用Object.getPrototypeOf去調(diào)用父類方法。需要的朋友可以過來參考下,希望對大家有所幫助2013-12-12JS基于面向?qū)ο髮?shí)現(xiàn)的多個(gè)倒計(jì)時(shí)器功能示例
這篇文章主要介紹了JS基于面向?qū)ο髮?shí)現(xiàn)的多個(gè)倒計(jì)時(shí)器功能,結(jié)合實(shí)例形式分析了javascript面向?qū)ο蠹皶r(shí)間操作相關(guān)技巧,需要的朋友可以參考下2017-02-02微信小程序動(dòng)畫組件使用解析,類似vue,且更強(qiáng)大
這篇文章主要介紹了微信小程序動(dòng)畫組件,類似vue,且更強(qiáng)大使用解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-08-08JavaScript創(chuàng)建一個(gè)object對象并操作對象屬性的用法
這篇文章主要介紹了JavaScript創(chuàng)建一個(gè)object對象并操作對象屬性的用法,實(shí)例分析了javascript使用object類定義對象及屬性的用法,需要的朋友可以參考下2015-03-03JavaScript動(dòng)態(tài)操作select下拉框
這篇文章介紹了JavaScript動(dòng)態(tài)操作select下拉框的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-04-04javascript 瀏覽器判斷 綁定事件 arguments 轉(zhuǎn)換數(shù)組 數(shù)組遍歷
javascript 瀏覽器 判斷 綁定事件 arguments 轉(zhuǎn)換數(shù)組 數(shù)組遍歷等函數(shù)2009-07-07