zoukankan      html  css  js  c++  java
  • HTML5拖放与文件操作api,实现拖拽上传文件功能

    一. 拖放API

    1. 检测浏览器是否支持拖放功能:(IE10以下不支持HTML5拖放功能)(或者使用Modernizr特性检测库的Modernizr.draganddrop属性)

    var div = document.createElement("div");
    var support = ('draggable' in div) || ('ondrapstart' in div && 'ondrop' in div);
    if(support){
        //浏览器支持HTML5拖放
    }else{
        //使用UI库来实现拖放
    }

     2, draggable="true"自定义样式

    [draggable] {
        /*防止可拖曳元素的文字被选中*/
        -webkit-user-select :none;
        user-select :none;
        /*可以拖曳的元素通常鼠标是十字形*/
        cursor: pointer;
    }

    3,拖放事件(dragstart,dragenter,dragover,dragleave)(event对象中有dataTransfer属性获取额外的数据)(绕晕了)

     dragstart:元素开始被拖曳时触发;

     dragenter:处于拖曳状态的鼠标第一次进入被赋予该事件的元素时触发,(dragenter和dragleave可实现高亮或标记可释放的元素)

     dragleave :处于拖曳状态的鼠标第一次离开被赋予该事件的元素时触发;

     dragover:处于拖曳状态的鼠标移动经过被赋予该事件的元素时触发;dragover会不断触发,要慎用(必须阻止dragover的默认行为(即不可drop));

     当拖曳时被拖曳的元素也会触发一系列事件

     drag:在拖曳源触发,会不断地触发

     drop:在释放时,在释放元素上触发(拖动上传功能需要注意:1, drop事件会往父元素冒泡,因此需阻止它冒泡;2, 文件drop后会有下载的默认动作,因此也需要阻止默认行为;3, 阻止dragover的默认行为

     dragend:拖曳源在拖曳操作结束后触发,不管拖曳操作成功与否

    4, dataTransfer属性

     files:被拖曳的文件列表;

     types:拖曳数据的类型

     clearData(type):删除给定类型的数据(如果没提供参数,所以类型都被删除)

     items:

    二. 文件操作

    1. 表单类型

    <!--file表单选择文件,multiple属性可以选择多个文件-->
    <input type = "file" id="file1" multiple>

    2. file对象(通过拖曳的文件可以用dataTransfer的files来访问)

       name : 文件名,不包含路径信息

       type  : 文件的MIME type

       size  : 文件大小,以byte为单位

    3. FileReader对象

      file文件对象只能访问到文件的基本信息,需要依靠FileReader对象访问文件的具体内容,FileReader在读取文件时是异步执行的,需要绑定其load事件来访问读取结果

      

      

  • 相关阅读:
    linux常用命令:
    解决css添加padding后元素变长的问题
    Hbase常用命令
    集群部署的三种方式(hadoop集群部署三种方式)
    linux编译安装指定依赖的软件包
    vue使用Element隐藏侧边栏进度条
    css相对于父容器,固定放在底部并撑满
    java中23种设计模式
    adb remount'的作用是什么?在什么情况下有用?
    java常用http请求库
  • 原文地址:https://www.cnblogs.com/zhaoliner/p/5960958.html
Copyright © 2011-2022 走看看