拖拽API
属性
draggable 设置为 draggable=true 可以被拖拽
拖拽事件
- ondragstart 开始被拖动的时候触发 绑定给被拖动的元素
 - ondrag 拖动的过程总被连续触发 绑定给被拖动的元素
 - ondragend 停止拖动的时候的触发 绑定给被拖动的元素
 - ondragenter 当被拖拽的元素进入到目标元素 绑定给目标元素 用于进入目标去区域时 目标区域样式改变
 - ondrageover 当被拖拽的元素在目标元素内移动 绑定给目标元素 若想触发drop时间,必须阻止默认动作 event.preventDefault()
 - ondrageleave 当被拖拽的元素离开目标元素 绑定给目标元素
 - ondrop 在目标元素内停止拖拽 绑定给目标元素
 
dataTransfer 对象
- e.dataTransfer.setData('传输名',传输对象) 用于提交传输对象
 - e.dataTransfer.getData('传输名') 用于获取传输对象
 - e.dataTransfer.files 获取被drop的外部文件
 
文件API
上传input
多文件上传 设置属性 multiple
- 限制上传文件的格式 属性 `accept= " image/jpeg text/html image/* "
 
FileList对象
- 是用户上传或者拖拽到浏览器的 文件的集合
*可以通过 inputElement.files 来获取
*是一个类数组对象 由File对象组成 
File对象
- 属性 name
 - 属性 size
 - 属性 type
 - 属性 lastModified
 - 属性 lastModifiedDate
 
FileReader
属性
- result 读取结果
 - error 错误内容
 - readyState 读取状态
 
方法
- readAsText() 把文件读取为文本
 - readAsDataURL() 读取为base64图片编码
 - readAsArrayBuffer()
 - readAsBinaryString()
 - abort() 终止读取操作
 
事件
- onerror 读取错误时触发
 - onabort 读取中断时触发
 - onloadstart 读取开始时触发
 - onload 读取成功时触发
 - onloadend 读取结束时 不论成功或失败
 - onprogress 读取过程中多次触发
 
综合使用:
var box = document.querySelector("#box");
box.addEventListener("dragover", function(e) {
    e.preventDefault();
}, false);
box.addEventListener("drop", function(e) {
    e.preventDefault();
    [].forEach.call(e.dataTransfer.files, function(itemFile) {
        console.log(e.dataTransfer.files)
        readImage(itemFile);
    })
}, false);
function readImage(fileObj) {
    var frObj = new FileReader();
    frObj.onload = function() {
        var img = document.createElement("img");
        img.src = frObj.result;
        document.querySelector("#box").appendChild(img);
    }
    frObj.readAsDataURL(fileObj);
}
XHR2
FormData
- 构造
new FormData([formElement]) - 方法
append(key, value)
delete(key)
get(key)
set(key,value)
.... - 在Ajax中的使用
XHR 作为send()方法的参数 发送post请求
jquery
设置data的值为 FormData对象
还需要设置 processData:false和contentType:false - XHR2新增属性
timeout - XHR新增的事件
timeout 请求超时时触发
error 请求失败时
abort 请求中断时
load 响应成功后
loadstart 开始请求时
loadend 结束响应时
progress 请求响应过程中连续触发 - ProgressEvent
属性 loaded 当前下载了多少字节
属性 total 总的字节数
属性 lengthComputable 长度是否可计算 - XMLHttpRequestUpload 对象
作用
提供了各种事件来监听文件上传的进度
常用progress事件。 获取progressEvent - 构建
xhr.upload - 事件
error
timeout
load
loadstart
loadend
abort
progress
Web存储
localStorage
sessionStorage