Drag & Drop and File Reader

参考 :

http://www.html5rocks.com/zh/tutorials/file/dndfiles/

http://blog.csdn.net/rnzuozuo/article/details/25295899

http://www.tutorialspoint.com/html5/html5_drag_drop.htm

本篇只作为个人参考

FIle Reader

method
abort()  停止读
readAsText(file,"utf-8") , 第2参数是指定解码格式,常用于读取一些 txt 文本等
readAsBinaryString(file) , 2进制, 可以用于ajax提交到后端
readAsDataURL(file) , 好像是base64 , 可以用于在本地显示图片

event
onabort 中断时触发
onerror 出错时触发
onload 文件读取成功完成时触发
onloadend 读取完成触发,无论成功或失败
onloadstart 读取开始时触发
onprogress 读取中

//display img in local
//2 way : FileReader and createObjectURL
document.getElementById("upload").addEventListener("change", function (e) {
    var inputFile = e.target;
    var files = G.toArray(inputFile.files);
    var file = files[0];

    //note : minimum need ie10
    //createObjectURL to display img on local
    var URL = window.URL || window.webkitURL;
    var img = new Image();
    img.onload = function (e) {
        window.URL.revokeObjectURL(this.src);
        document.body.appendChild(this);
    }
    img.src = URL.createObjectURL(file); 

    //note : minimum need ie10
    var reader = new FileReader();
    reader.onload = function (e) {
        var img = new Image();
        img.src = e.target.result;
        document.body.appendChild(img);
    }
    reader.readAsDataURL(file);
}, false);

Drag & Drop

div 要可以drag , 就放一个 draggable="true"的属性,

div 要可以drop , 就 addEventListener dragover for preventDefault(),stopPropagation() then addEventListener drop

传输时value 只能是 string 类型
"event" 在传输的时候不是同一个引用

dataTransfer.getData 是可以跨游览器的

    document.getElementById("drop").addEventListener("dragover", function (e) {
        e.stopPropagation();
        e.preventDefault();
        log("over");
    }, false);
    document.getElementById("drop").addEventListener("dragenter", function (e) {
        e.stopPropagation();
        e.preventDefault();
        log("enter");
    }, false);
    document.getElementById("drop").addEventListener("drop", function (e) {
        //var files = e.dataTransfer.files; //if drop a file from window. like use file update
        //log(dataTransfer.types); //if is file = "Files" , else DOMStringList
        e.dataTransfer.dropEffect = ‘move‘; //copy, link, and move
        var data = e.dataTransfer.getData("key");
        e.preventDefault();
        log("drop!");
    }, false);
    document.getElementById("drag").addEventListener("dragstart", function (e) {
        e.dataTransfer.setData("key", "must string");
        e.dataTransfer.effectAllowed = ‘copyLink‘; //none, copy, copyLink, copyMove, link, linkMove, move, all and uninitialized.
        var specifiedImage = document.getElementById("liushishi");
        e.dataTransfer.setDragImage(specifiedImage, 100, 100); //para2,para3 is mouse position x,y in the target element
        //e.dataTransfer.addElement(specifiedImage); //this method is same with setDragImage , better use setDragImage , because can set x,y
        log("drag");
    }, false);
时间: 2024-08-09 01:34:02

Drag & Drop and File Reader的相关文章

html 5 drag and drop upload file

compatible: chrome firefox ie 11 , not supported demo: http://demo.tutorialzine.com/2011/09/html5-file-upload-jquery-php/ http://www.sitepoint.com/author/craig-buckler/page/23/ http://www.sitepoint.com/html5-file-drag-and-drop/ http://www.sitepoint.c

Atitit。D&D drag&drop拖拽功能c#.net java swing的对比与实现总结

Atitit.D&D drag&drop拖拽功能c#.net java swing的对比与实现总结 1. 实现一个D&D操作一般包括三个步骤: 1 2. .net黑头的拖曳机制.必须有DragEnter事件(单独写DragDrop事件是不会具有拖拽功能的) 2 3. ---java黑头的拖曳..必须有DragEnter事件(单独写 Drop事件是不会具有拖拽功能的) 2 4. 代码 3 5. 参考 5 1. 实现一个D&D操作一般包括三个步骤: 首先实现一个拖拽源,这个拖拽

atitit.D&D drag&drop拖拽文件到界面功能 html5 web 跟个java swing c#.net c++ 的总结

atitit.D&D drag&drop拖拽文件到界面功能 html5 web 跟个java swing c#.net c++ 的总结 1. DND的操作流程 1 2. Html5 注解事件 document.dragover >>preventDefault 1 3. 代码(js) 1 4. C++ 实现拖曳 2 5. QT拖拽功能简介 - pcsuite的专栏 - 博客频道 - CSDN.NET.htm 2 1. DND的操作流程 Dragenter 事件::更改提示的颜色

HTML5魔法堂:全面理解Drag & Drop API

一.前言    在HTML4的时代,各前端工程师为了实现拖拽功能可说是煞费苦心,初听HTML5的DnD API觉得那些痛苦的日子将一去不复返,但事实又是怎样的呢?下面我们一起来看看DnD API的真面目吧! 二.由于篇幅较长,特设目录一陀 三.HTML4下实现简单拖拽 四.HTML5下实现简单拖拽 五.如何启用DnD效果 六.draggable属性详解 七.DnD的生命周期 八.DnD中最重要的数据传递对象──DataTransfer对象 九.[object DataTransferItemLi

Draggabilly – 轻松实现拖放功能(Drag & Drop)

Draggabilly 是一个很小的 JavaScript 库,专注于拖放功能.只需要简单的设置参数就可以在你的网站用添加拖放功能.兼容 IE8+ 浏览器,支持多点触摸.可以灵活绑定事件,支持 RequireJS 以及 Bower 安装. 您可能感兴趣的相关文章 创意无限!一组网页边栏过渡动画[附源码下载] 真是好东西!13种非常动感的页面加载动画效果 你见过吗?9款超炫的复选框(Checkbox)效果 超赞!基于 Bootstrap 的响应式的后台管理模板 太赞了!超炫的页面切换动画效果[附源

HTML 学习笔记 (drag & drop)

拖放(Drag & Drop)是一种常见的特性,即抓取对象以后拖到另一个位置.在 HTML5 中,拖放是标准的一部分,任何元素都能够拖放.过去,我们用监听鼠标的Mousedown.Mouseove.Mouseup等事件来不停地获取鼠标的坐标来修改元素的位置,而现在html5原生的Drag &Drop事件(DnD),方便了许多,而且性能也有了提高. 如何使对象能够被拖动 为了使元素能够被拖动 需把要拖动元素的draggable 属性设置为true. <img src="../

【Qt学习笔记】13.拖放技术:Drag & Drop

1.接受拖放 Drag & Drop 是一个界面操作,用于在两个窗口间传递数据. Drag Source: 拖放源窗口 Drag Target: 拖放目标窗口 拖放操作: 1.在源窗口:选中目标,按下鼠标,移动,拖至目标窗口(Drag) 2.在目标窗口:取消鼠标,到指定位置,松开鼠标(Drop) (按下ESC取消操作) MIME: MIME(Multipurpose Internet Mail Extensions)被传递的数据以MIME格式传送,它是多组type-data数据:(type0,

Drag Drop注册失败问题如何解决

Drag Drop注册失败的问题经常出现在开发项目的过程中,可能一开始运行的时候是好的,过了一段时间运行发现蹦出个这个问题. 现提供两种解决方案:1)在项目的program.cs中找到main函数,在main函数之前加上[STA Thread];2)如果你的线程是新开,则需要在你新开的线程启动之前加上这句代码:thread.SetApartmentState(ApartmentState.STA);

C# - CSV file reader

// -------------------------------------------------------------------------------------------------------------------- // <summary> // Defines the CSVFileReader type. // </summary> // ----------------------------------------------------------