draggable元素内,子元素 drag enter/leave 会触发父元素上的事件,理论上解释是 dragenter/dragleave 事件具有冒泡特性。由于光标在空白区域和子元素间切换,event.target 会多次返回父元素节点,要判断是否在父元素内拖动需要屏蔽掉子元素的干扰,有几种解决方法:
1. 父元素内所有节点绑定事件监听设置 event.stopPropagation() -> 消耗太大
2. 父元素内所有节点设置 pointer-events: none -> 副作用太大
3. 记录 dragentered 的次数,dragenter 时计数+1,dragleave 时计数-1。dragentered 为 0 时处于父元素之外
stackoverflow.com
1. 父元素内所有节点绑定事件监听设置 event.stopPropagation() -> 消耗太大
2. 父元素内所有节点设置 pointer-events: none -> 副作用太大
3. 记录 dragentered 的次数,dragenter 时计数+1,dragleave 时计数-1。dragentered 为 0 时处于父元素之外
展开
1
3