HTML JS 拖动文件的操作,Drop 的使用 js html H5

本文详细介绍了如何利用HTML和JavaScript创建一个文件拖放功能,包括设置drop区域、处理ondragover和ondrop事件,以及如何处理文件数据。通过实例演示了图片上传查看功能,适合前端开发者学习和实践。
摘要由CSDN通过智能技术生成

HTML JS 拖动文件的操作,Drop 的使用 js html H5

MDN: https://developer.mozilla.org/en-US/docs/Web/API/HTML_Drag_and_Drop_API/File_drag_and_drop

拖动文件的操作指的是拖动文件到指定 HTML 元素,再处理需要实现的功能。
要实现拖动文件的操作,需要进行以下步骤:

  1. 指定 drop 到的元素
  2. 处理 ondrop 事件

一、 指定 drop 到的元素

拖动文件时要把文件放置到的元素

<div class="container"
     ondrop="handleDrag(event)"
     id="dropZone">
</div>

二、处理相应的事件

  • ondragover 当拖动到此元素时,但还没有释放
  • ondragleave 当离开此元素时
  • ondragend 拖动结束时
  • ondrop 到指定元素释放拖动操作时

这里我们主要需要处理两个事件, ondropondragover

ondragover 处理拖动中的界面反馈

因为当拖动到对应接收文件的元素上时, dom 并不会发生变化,界面也不会有变化。但此时你需要给用户一个反馈,让其知道拖动操作是有效的,给用户一个反馈:背景色变化、文字提示等。 这些操作就需要在 ondragover 上进行。比如添加一个背景色变化的 class。


<div class="container"
     ondrop="handleDrag(event)"
     ondragleave="handleDragEnd()"
     ondragend="handleDragEnd()"
     ondragover="handleDragOver(event)"
     id="dropZone">
</div>

function handleDragOver(event){
  $('.container').classList.add('on-hover')
}

在这里插入图片描述

ondrop 处理释放鼠标时的文件操作

ondrop 就是在你释放鼠标时候会触发的事件,这里就写你需要处理的东西就可以了。
event 里有个 dataTransfer 里面包含着这些拖动的文件列表 files items

在这里插入图片描述

你可以直接使用 event.dataTransfer.files 来获取文件列表,
你也可以使用 event.dataTransfer.items 来获取拖动的 item,再将其转化为 file 处理,这个可以从下面这个链接中查看例子,平常就直接使用 files 即可

MDN: https://developer.mozilla.org/en-US/docs/Web/API/HTML_Drag_and_Drop_API/File_drag_and_drop

这里要注意,需要添加 event.preventDefaults() 来避免浏览器的默认动作:直接打开拖动的文件。

   function handleDragOver(event){
      $('.container').classList.add('on-hover')
   }
   
   function handleDragEnd(){
      $('.container').classList.remove('on-hover')
   }
   
   function handleDrag(event){
      handleDragEnd() // 去掉界面反馈
      event.preventDefault() // 避免浏览器默认打开拖动的文件的操作

      let files = event.dataTransfer.files;
      console.log(event)
      showFiles(files) // 去进行文件显示的操作
   }

例子

我写了个拖动图片查看图片的页面:

https://kylebing.cn/tools/drop-and-show/

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

十月ooOO

许个愿,我帮你实现

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值