• 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);
  • 相关阅读:
    [数学建模(八)]使用MATLAB绘图
    [数学建模(七)]使用MATLAB实现数据拟合
    [数学建模(六)]使用MATLAB实现插值
    [数学建模(五)]线性规划,二次规划和非线性规划的MATLAB求解
    [数学建模(四)]MATLAB神经网络工具箱的简单应用
    [数学建模(三)]遗传算法与旅行商问题
    [数学建模(二)模拟退火法与旅行商问题]
    [数学建模(一)]蒙特卡罗方法
    Java虚拟机13:Java类加载机制
    Java虚拟机14:类加载器
  • 原文地址:https://www.cnblogs.com/keatkeat/p/4172875.html
Copyright © 2020-2023  润新知