h5原生拖拽不能触发drop事件问题

2019年06月14日Web前端0

一直使用拖拽组件去实现web上的拖拽问题,没有机会接触原生的拖拽事件。趁着空余时间了解了原生拖拽,实践中发现了,拖拽中的drop一直无法触发的问题。

问题

用简单的demo来表示下,

当直接绑定事件的时候,并不能触发对应的drop事件。

解决方案

为了能触发drop事件,需要在dragover事件中阻止默认事件才可生效,紧接以上代码,设置preventDefault:

此时,查看控制台,就可以生效了。

其他

既然讲到了drag事件,也就顺带着写些对应的其他事件吧。

设置可拖拽

首先要增加元素draggable="true"的属性表示该元素可拖拽。

事件

还有一些其他的方法,按照绑定的元素分为被拖拽元素和目标元素(放置被拖拽元素的区域)。

被拖拽元素

  • dragstart,开始拖拽时触发。
  • drag,拖拽中连续触发。
  • dragend,拖拽结束触发。

目标元素

  • dragenter,被拖拽元素拖入目标元素内触发。
  • dragover,被拖拽元素在目标元素上方时连续触发。
  • dragleave,被拖拽元素离开目标元素内触发。
  • drop,被拖拽元素放置到目标元素上时触发(先于dragend)。

代码地址:github