文章出處
文章列表
事件太多的問題
項目中監聽的事件比較多,綁定在各種dom上,用到的事件類型也比較全,像mousedown,mousemove,mouseup,touchstart,touchmove,touchend,這些都隨處可見。以下問題使我們比較煩心的:
1)事件直接本身就有關聯
2)綁定的dom元素之間也存在父子關系,導致后面結構混亂
3)事件冒泡等相互影響導致的bug也不少
4)解決bug時無意中又帶出新的問題
項目代碼急需重構!
重構要點
1)對于綁定的dom太多的問題,我們考慮只將事件綁定在document上,在處理時判斷具體作用于target的id或者className或者tagName來走不同的邏輯分支。
2)而對于事件類型的統一可以嘗試使用pointerEvent,這樣就不用電腦端和移動端分開兩套事件監聽了。
Pointer Event (W3C)能支持的指針裝置包括了鼠標、觸控(手指)、以及筆型裝置;而除了能整合不同類型的指針裝置外,Pointer Event 針對能支持的硬件,也多了相當多額外的參數,像是壓力、寬度、高度,甚至比型裝置的傾斜程度等等。 這些更詳細的資訊,基本上都是可以讓開發者根據各種指針裝置的輸入,來做更細致的處理的~再加上透過 Pointer Event 的架構,可以一次性地處理掉鼠標和觸控等裝置的事件,應該算是一種相對好的架構。(MSDN 參考)https://docs.microsoft.com/en-us/microsoft-edge/dev-guide/dom/pointer-events
文章列表
全站熱搜