前端鼠标拖动事件冲突

几个月前曾处理过一个问题单,底层为canvas,支持图形拖拽,有一个功能点要求弹出一个对话框,且不能使用遮罩层,因为想实现这样的效果:点击canvas上的一个元素,对话框显示其具体信息,若使用遮罩层,必须将对话框关闭才能点击到canvas上的元素。
好吧,功能实现简单,jquery UI的对话框,遮罩层的对应属性设置好,ok。给测试,测试提出,对话框可以调宽高,但是有时候调整宽高很不方便啊,必须鼠标左键按着很慢很慢的速度拖动才能增加宽度和高度,但是减小宽度和高度则很方便,速度快也没问题,最后定位才发现,对话框在canvas上方,如果按着左键不放,速度太快,鼠标事件将给canvas,而不是我们期望的对话框的边框。
最终的处理方式是,将没有必要调整大小的对话框固定宽高,禁止调整,而对于必须要调整的(信息太多,一次给出显示不下,需要用户根据自身需求调整窗口大小)的对话框,经过沟通后还是加上了遮罩层,不然就得花时间去调整jqueryUI封装好的宽度调整的灵敏度。
这个问题单最大的收获不是技术上的,而是软件开发的经验:可有可无的功能最好去掉,集中精力处理主要的需求。功能再简单,加上去需要的代码量再少,也不应该因为这样就加。一是功能加上容易,删除就难了,一段时间后,很难说没有其他功能选择依赖该功能存在(即使不依赖也可以实现的),而且多一个功能,出错了排查点多,需要维护的点多,最坑的是处理其他问题时,将这个功能删除就可以很容易的修复bug,但是后来的人不清楚这是个必须的功能,还是可选的功能,导致不敢轻易动,只能绕一大圈解决或者要花时间问了解的人,浪费时间。

你可能感兴趣的:(鼠标,对话框)