前端鼠標拖動事件衝突

幾個月前曾處理過一個問題單,底層爲canvas,支持圖形拖拽,有一個功能點要求彈出一個對話框,且不能使用遮罩層,因爲想實現這樣的效果:點擊canvas上的一個元素,對話框顯示其具體信息,若使用遮罩層,必須將對話框關閉才能點擊到canvas上的元素。
好吧,功能實現簡單,jquery UI的對話框,遮罩層的對應屬性設置好,ok。給測試,測試提出,對話框可以調寬高,但是有時候調整寬高很不方便啊,必須鼠標左鍵按着很慢很慢的速度拖動才能增加寬度和高度,但是減小寬度和高度則很方便,速度快也沒問題,最後定位才發現,對話框在canvas上方,如果按着左鍵不放,速度太快,鼠標事件將給canvas,而不是我們期望的對話框的邊框。
最終的處理方式是,將沒有必要調整大小的對話框固定寬高,禁止調整,而對於必須要調整的(信息太多,一次給出顯示不下,需要用戶根據自身需求調整窗口大小)的對話框,經過溝通後還是加上了遮罩層,不然就得花時間去調整jqueryUI封裝好的寬度調整的靈敏度。
這個問題單最大的收穫不是技術上的,而是軟件開發的經驗:可有可無的功能最好去掉,集中精力處理主要的需求。功能再簡單,加上去需要的代碼量再少,也不應該因爲這樣就加。一是功能加上容易,刪除就難了,一段時間後,很難說沒有其他功能選擇依賴該功能存在(即使不依賴也可以實現的),而且多一個功能,出錯了排查點多,需要維護的點多,最坑的是處理其他問題時,將這個功能刪除就可以很容易的修復bug,但是後來的人不清楚這是個必須的功能,還是可選的功能,導致不敢輕易動,只能繞一大圈解決或者要花時間問了解的人,浪費時間。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章