原生拖放中涉及到的事件分为分下列两个阶段:
(1)拖动某元素时,该阶段会依次触发下列事件(该阶段的事件目标–即target或srcElement都是这个被拖动元素):
1. dragstart——鼠标移入目标元素并且按下左键触发。
2. drag——dragstart触发后移动鼠标连续触发该事件(类似mousemove事件)
3. dragend——拖动停止时触发(无论此时拖动元素在有效位置还是无效位置)。
(2)当元素被拖动到一个有效的放置目标上时,触发下列事件(该阶段的事件目标–即target或srcElement都是这个目标元素):
1. dragenter——只要有元素被拖动到放置目标上,就触发dragenter事件(类似mouseover)
2. dragover——触发dragenter后在有效目标范围内移动时连续触发该事件
3. dragleave——被拖动元素从目标范围内被拖出到目标范围外时触发
4. drop——被拖动元素被放到了目标范围内(即在有效目标范围内松口鼠标左键)
当文件被拖拽到浏览器中时,会触发默认事件,打开该文件,导致后续操作无法完成,所以必须要阻止默认事件。