H5拖拽上传

知识点

谷歌等:
图片自带拖拽功能
            其他元素可设置draggable属性
            draggabletrue
                拖拽元素(被拖拽的元素)事件 :
                    ondragstart :   拖拽的一瞬间触发
                    ondrag :    拖拽前、拖拽结束之间,连续触发
                    ondragend : 拖拽结束触发

                目标元素(拖拽元素被拖到的地方)事件 :
                    ondragenter :   进入目标元素触发
                    ondragover :    进入目标、离开目标之间,连续触发
                    ondragleave :   离开目标元素触发
                    ondrop :在目标元素上释放鼠标触发

                !!!!默认状态下,一个元素不能放另一元素的上面,需要在ondragover事件里面阻止默认事件



火狐浏览器下:

        !!!!!!draggable='true' ====>给拖动标签加上
        火狐浏览器下需设置e.dataTransfer对象才可以拖拽除图片外的其他标签
        要设置一个属性
            setData() :     设置数据 keyvalue(必须是字符串)
            getData() :     获取数据,根据key值,获取对应的value




        effectAllowed :     设置光标样式(none, copy, copyLink, copyMove, link, linkMove, move, alluninitialized)

          setDragImage :  三个参数(指定的元素,坐标X,坐标Yfiles:      获取外部拖拽的文件,返回一个filesList列表

         filesList下有个type属性,返回文件的类型

         创建对象: FileReader(读取文件信息)
          readAsDataURL
         参数为要读取的文件对象
         onload当读取文件成功完成的时候触发此事件
         this. result 获取读取的文件数据

正常下的拖拽.


<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <meta name="Author" content="">
    <meta name="Keywords" content="">
    <meta name="Description" content="">
    <title>Documenttitle>
    <style type="text/css">
        * {margin: 0; padding: 0;}
        a {text-decoration: none;}
        ul,li {list-style: none;}
        body {font-family: "Microsoft yahei";}
        #box {float: left; width: 200px; height: 200px; background: gray;}
        #wrap {float: right; width: 300px; height: 400px; background: gray;}

    style>
head>
<body>
    <div id="box" draggable='true'>div>
    <div id="wrap"> div>
    <script type="text/javascript">
        /*
            图片自带拖拽功能
            其他元素可设置draggable属性
            draggable :true
                拖拽元素(被拖拽的元素)事件 :
                    ondragstart :   拖拽的一瞬间触发
                    ondrag :    拖拽前、拖拽结束之间,连续触发
                    ondragend : 拖拽结束触发

                目标元素(拖拽元素被拖到的地方)事件 :
                    ondragenter :   进入目标元素触发
                    ondragover :    进入目标、离开目标之间,连续触发
                    ondragleave :   离开目标元素触发
                    ondrop :在目标元素上释放鼠标触发

                !!!!默认状态下,一个元素不能放另一元素的上面,需要在ondragover事件里面阻止默认事件

         */
         var num = 0;
        box.ondragstart = function(){
            this.style.background = '#f60';
        }
        box.ondrag = function () {
            box.innerHTML = num++;
        }
        box.ondragend = function(){
            this.style.background = '#ccc';
        }
        wrap.ondragenter = function () {
            this.innerHTML = '松开鼠标,上传文件'
        }
        wrap.ondragover =function (e) {
            var e = e || window.event;
            e.preventDefault();
             document.title = num++;
        }
        wrap.ondragleave = function () {
            this.innerHTML = '';
        }
        wrap.ondrop = function (e) {
            var e = e || window.event;
            console.log(e.dataTransfer);
            this.innerHTML = '';
            alert(1);
        }
    script>
body>
html>

火狐下拖拽


<html lang="en">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <meta name="Author" content="">
    <meta name="Keywords" content="">
    <meta name="Description" content="">
    <title>Documenttitle>
    <style type="text/css">
        * {margin: 0; padding: 0;}
        a {text-decoration: none;}
        ul,li {list-style: none;}
        body {font-family: "Microsoft yahei";}
        #box {float: left; width: 200px; height: 200px; line-height: 200px; background: #ccc; text-align: center; color: #fff;}
        ul {float: right; width: 100px;}
        li {height:35px; border:1px dashed #000;}
    style>
head>
<body>
    <div id="box">垃圾回收站div>
    <ul>
        <li draggable='true'>1li>
        <li draggable='true'>2li>
        <li draggable='true'>3li>
        <li draggable='true'>4li>
        <li draggable='true'>5li>
    ul>
    <script type="text/javascript">
    /*
        !!!!!!draggable='true' ====>给拖动标签加上
        火狐浏览器下需设置e.dataTransfer对象才可以拖拽除图片外的其他标签
            setData() :     设置数据 key和value(必须是字符串)
            getData() :     获取数据,根据key值,获取对应的value

     */
    var oUl = document.querySelector('ul');
    var aLi = document.querySelectorAll('li');

    for( var i=0;ifunction(e){
            var e = e || event;
            //console.log( e.dataTransfer );
            e.dataTransfer.setData('index',this.index);
            this.style.background = 'gray';
        };
    }
    box.ondragover = function (e) {
        var e = e || window.event;
        e.preventDefault();
    }
    box.ondrop = function (e) {
        var e = e || window.event;
        console.log(e.dataTransfer.getData('index'));
        oUl.removeChild(aLi[e.dataTransfer.getData('index')])
    }
    script>
body>
html>

外部文件拖入


<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <meta name="Author" content="">
    <meta name="Keywords" content="">
    <meta name="Description" content="">
    <title>Documenttitle>
    <style type="text/css">
        * {margin: 0; padding: 0;}
        a {text-decoration: none;}
        ul,li {list-style: none;}
        body {font-family: "Microsoft yahei";}
        #box {width: 200px; height: 200px; background: gray; line-height: 200px; text-align: center; color: #fff;}
        img {width: 100px; height: 100px;}
    style>
head>
<body>
    <div id="box" >div>
    <script type="text/javascript">
        /*
                effectAllowed :     设置光标样式(none, copy, copyLink, copyMove, link, linkMove, move, all 和 uninitialized)

                setDragImage :  三个参数(指定的元素,坐标X,坐标Y)

                files:      获取外部拖拽的文件,返回一个filesList列表

                filesList下有个type属性,返回文件的类型

                创建对象: FileReader(读取文件信息)
                 readAsDataURL
                参数为要读取的文件对象
                onload当读取文件成功完成的时候触发此事件
                this. result 获取读取的文件数据
         */
         box.ondragenter = function () {
            this.innerHTML = '松开上传';
         }
         box.ondragover = function (e) {
            var e = e || window.event;
            e.preventDefault();
         };
         box.ondragleave = function (e) {
             this.innerHTML = '请上传图片';
         }
         box.ondrop = function (e) {
             var e = e || window.event;
             e.preventDefault();
             console.log(e.dataTransfer);
             var FileList = e.dataTransfer.files;
             console.log(FileList);
             // 创建对象: FileReader
             var File = new FileReader();
             File.readAsDataURL(FileList[0]);
             File.onload = function () {
                 console.log(this);
                 var oImg = document.createElement('img');
                 oImg.src = this.result;
                 document.body.appendChild(oImg);
             }
         }
    script>
body>
html>

你可能感兴趣的:(html5)