拖拽上传和dataTransfer对象操作

场景:有一个文件上传div区域,要在这个区域实现文件拖拽到此处可以读取文件。

参考:https://blog.csdn.net/qq_43523725/article/details/115162416

           https://blog.csdn.net/hjc256/article/details/89021483

被拖拽元素目标元素的事件:

被拖拽元素:drag-在拖拽的过程中触发

                      dragend-拖拽完成时

目标元素 :dragenter- 拖放元素进入目标元素时

                   dragover - 拖放元素在目标元素上时

                   dragleave - 拖放元素在目标元素上离开

                   drop- 被拖放的元素在目标元素上同时鼠标放开触发的事件(注:需要阻止dragover的默认行为才会触发drop事件)

let dropBox = this.$refs.dragArea;

dropBox.addEventListener("dragenter", onDrag, false)

dropBox.addEventListener("dragover", onDrag, false)

dropBox.addEventListener("drop", onDrop, false)

function onDrag(e){

    e.preventDefault();

    e.stopPropagation();

}

onDrop(e){

    e.stopPropagation();

     e.preventDefault();

    let dt = e.dataTransfer;

    let selectedFile = dt.files[0];

}

dataTransfer对象

在所有的拖放事件中都提供了一个数据传输对象dataTransfer,主要是用于在源对象和目标对象之间传递数据。

1、setData(format, data)

    设置拖拽事件中要传递的数据,format的参数为数据类型

    该方法向dataTransfer中对象中存入数据,接受两个参数,第一个表示要存入的数据类型,共有4种:text/plain、text/html、text/xml、text/uri-list

    第二个参数为要存入的数据,例如:event.dataTransfer.setData('text/plain', 'hello world')

2、getData(format)

    获得拖拽事件中传递的数据,format参数为数据类型

    该方法从dataTransfer对象中读取数据,参数为在setData方法中指定的数据类型,例如:event.dataTransfer.getData('text/plain')

3、clearData()

    该方法清空dataTransfer对象中存储的数据,参数可选,为数据类型。若为空,则清空所有数据。

3、setDragImage(element,x,y)

    该方法通过img元素来设置拖放图标

    element表示拖拽时鼠标下面的图片(通常是image元素,也可以说canvas元素)

    x、y分别指示相对于图片的横向和纵向偏移量,相对应鼠标指针。

3、files属性

     返回被拖拽的文件列表,是一个FileList对象,有length属性,可通过下标访问。

      file对象的例子:


©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • W3C中关于H5拖拽(拖放)的介绍 拖放(Drag 和 drop)是 HTML5 标准的组成部分拖放是一种常见的特...
    云音流阅读 994评论 0 3
  • 拖拽,拖放事件可以通过拖拽实现数据传递,达到良好的交互效果,如:从操作系统拖拽文件实现文件选择,拖拽实现元素布局的...
    ConRon阅读 1,807评论 0 2
  • 一、拖拽API 设置对象可以拖动 事件 dragover有一个默认行为!!!那就是当dragover触发时,dro...
    小懒豆阅读 670评论 0 1
  • 1.处理步骤 a.定义可拖动目标 b.定义被拖动的数据,可能为多种不同的格式 c.允许设置拖拽效果 d.定义放置区...
    阿迪呀dity阅读 1,726评论 0 3
  • 点击上传 利用 type="file" 的 input,上面覆盖一个 div 或者其他元素,点击该元素时触发 in...
    Miss_麦兜阅读 1,234评论 0 0

友情链接更多精彩内容