vue中解決拖動和點選事件的衝突

2022-08-17 18:39:18 字數 620 閱讀 9480

bug說明:

滑鼠上下方向拖拽,如果鬆開時滑鼠位於懸浮按鈕上會預設執行click事件,經驗證,click事件與mouse事件的執行順序為onmousedown =》onmouseup =》onclick,意味著在click事件執行時會與與其相關的mouse事件衝突。

解決方案:

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

1、自定義拖拽指令

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

directives:

};document.onmouseup = (e) =>

};};}}

},2、懸浮選單點選事件中進行驗證。

click(e)             //之後都是被阻止的**

if (!localstorage.settings)

if (this.right === -300) else

}

vue中巧用事件委託處理點選事件提公升效能

事件處理函式本質上是一種函式,是一種物件,存放在記憶體中,設定大量的事件處理函式會使記憶體中的物件變多,影響程式的效能和使用者體驗,所以為了更好的利益事件處理函式,可以巧用事件委託來提公升效能 如果想要給若干個子節點繫結相同的事件 比如click 可以把事件統一繫結到父節點上,在父節點上統一處理從子...

vue中的事件

用v on 繫結事件 v on click mouseover 簡寫形式 click 推薦事件物件 click show event 事件冒泡 阻止冒泡 a ev.cancelbubble true b click.stop 推薦預設行為 預設事件 阻止預設行為 a ev.preventdefaul...

iOS Safari 中點選事件失效的解決方法

當使用委託給乙個元素新增click事件時,如果事件是委託到 document 或 body 上,並且委託的元素是預設不可點選的 如 div,span 等 此時 click 事件會失效。可以使用下面的 在 ios 中進行測試。click me 解決辦法有 4 種可供選擇 將 click 事件直接繫結到...