国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術文章
文章詳情頁

解決VUE自定義拖拽指令時 onmouseup 與 click事件沖突問題

瀏覽:79日期:2022-12-29 14:27:52

功能描述:

解決VUE自定義拖拽指令時 onmouseup 與 click事件沖突問題

解決VUE自定義拖拽指令時 onmouseup 與 click事件沖突問題

如圖,右側懸浮菜單按鈕,只支持上下方向拖動,點擊時展開或關閉菜單。

BUG說明:

鼠標上下方向拖拽,如果松開時鼠標位于懸浮按鈕上會默認執行click事件,經驗證,click事件與mouse事件的執行順序為onmousedown =》onmouseup =》onclick,意味著在click事件執行時會與與其相關的mouse事件沖突。

解決方案:

因為click事件執行時間短,所以利用鼠標拖動的時間差作為標志,在拖拽事件中計算鼠標從onmousedown 到onmouseup 所用的時間差,與200ms作比較,作為全局變量。由于vue的directives自定義指令中無法使用this,所以個人采用給元素設置屬性的方式來解決全局變量的存儲問題。

1、自定義上下拖拽指令

說明:指令中沒有this關鍵字,指令中通過el可以直接拿到指令綁定的元素;

directives: { drag: { // 指令的定義 bind: function (el) { let odiv = el; //獲取當前元素 let firstTime=’’,lastTime=’’; odiv.onmousedown = (e) => { document.getElementById(’dragbtn’).setAttribute(’data-flag’,false) firstTime = new Date().getTime(); // 算出鼠標相對元素的位置 let disY = e.clientY - odiv.offsetTop; document.onmousemove = (e) => { // 用鼠標的位置減去鼠標相對元素的位置,得到元素的位置 let top = e.clientY - disY; // 頁面范圍內移動元素 if (top > 0 && top < document.body.clientHeight - 48) {odiv.style.top = top + ’px’; } }; document.onmouseup = (e) => {document.onmousemove = null;document.onmouseup = null;// onmouseup 時的時間,并計算差值lastTime = new Date().getTime();if( (lastTime - firstTime) < 200){ document.getElementById(’dragbtn’).setAttribute(’data-flag’,true)} }; }; } } },

2、懸浮菜單點擊事件中進行驗證。

click(e) { // 驗證是否為點擊事件,是則繼續執行click事件,否則不執行 let isClick = document.getElementById(’dragbtn’).getAttribute(’data-flag’); if(isClick !== ’true’) { return false } if (!localStorage.settings) { return this.$message.error(’請選擇必填項并保存’); } if (this.right === -300) { this.right = 0; this.isMask = true; } else { this.right = -300; this.isMask = false; } },

補充知識:vue 子組件 created 方法不執行問題

近期做了一個項目 里面有一個樹形菜單,將數據寫在 js (死數據)中,所有的東西都能夠正常執行(i 標簽,子節點,父節點),但是當在請求接口文件或者請求后臺數據的時候,發現引入的子組件的created方法不執行,但是點擊父級菜單展開時還是能夠觸發,后來發現 是生命周期的問題,仔細查看一下,后來解決!

解決方法如下:

用watch 檢測一下data的數據變化,created方法既然在點擊的時候執行,所以也必須保留,好啦,就這樣!

以上這篇解決VUE自定義拖拽指令時 onmouseup 與 click事件沖突問題就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持好吧啦網。

標簽: Vue
相關文章:
主站蜘蛛池模板: 久久免费观看国产精品 | 日韩在线三级 | 毛片a级三毛片免费播放 | 欧美日韩在线播放一区二区三区 | 欧美人在线 | 美女一级毛片毛片在线播放 | 久久精品综合国产二区 | 香蕉网站狼人久久五月亭亭 | 成年人网站免费看 | 免费看一级 | 91撸视频 | 免费国产成人18在线观看 | 国产性做久久久久久 | 美日韩一区二区三区 | 国产成人精品免费午夜 | 国内自拍网 | 国产91会所洗浴女技师按摩 | 99精品视频在线这里只有 | 成年人视频免费网站 | 亚洲欧美日韩视频一区 | 国产在线一区观看 | 亚洲欧美成人综合久久久 | 制服丝袜在线视频香蕉 | 国产欧美专区在线观看 | 香蕉自拍视频 | 一区二区三区四区在线视频 | 国产一级在线现免费观看 | 久久精品国产一区二区三区不卡 | 一男一女的一级毛片 | 国产高清成人 | 亚洲最大看欧美片网站 | 成人怡红院视频在线观看 | 成人香蕉视频 | 久久在线精品 | 免费不卡毛片 | 国产毛片在线高清视频 | 日韩精品免费一区二区三区 | 久久一区二区三区99 | 高清亚洲 | 伊人婷婷色香五月综合缴激情 | 色秀视频在线观看88品善网 |