• <td id="ae6ms"><li id="ae6ms"></li></td>
  • <xmp id="ae6ms"><td id="ae6ms"></td><table id="ae6ms"></table>
  • <table id="ae6ms"></table>
  • <td id="ae6ms"></td>
    <td id="ae6ms"></td>
  • <table id="ae6ms"></table><table id="ae6ms"><td id="ae6ms"></td></table>
  • <td id="ae6ms"></td>
  • <table id="ae6ms"><li id="ae6ms"></li></table>
  • <table id="ae6ms"></table>
    西西軟件園多重安全檢測下載網站、值得信賴的軟件下載站!
    軟件
    軟件
    文章
    搜索

    首頁編程開發其它知識 → HTML5開發 拖拽文件上傳 Drag&Drop 拖拽功能的處理

    HTML5開發 拖拽文件上傳 Drag&Drop 拖拽功能的處理

    相關軟件相關文章發表評論 來源:西西整理時間:2012/9/15 9:08:24字體大?。?em class="fontsize">A-A+

    作者:佚名點擊:309次評論:0次標簽: html5

    • 類型:動畫制作大?。?i>36.9M語言:英文 評分:6.6
    • 標簽:
    立即下載

    Drag&Drop 拖拽功能的處理

    關于HTML5拖拽文件上傳,其實國外已經有很多網站有這樣的應用,最早推出拖拽上傳應用的是 Gmail,它支持標準瀏覽器下拖拽本地文件到瀏覽器中作為郵件的附件發送,但其實現在利用HTML5的功能實現,主要借助于新版支持的瀏覽器來實現,IE還是弱很多。

    拖拽上傳應用主要使用了以下 HTML5技術:

    Drag&Drop : HTML5基于拖拽的事件機制.

    File API :  可以很方便的讓 Web 應用訪問文件對象,File API 包括FileList、Blob、File、FileReader、URI scheme,本文主要講解拖拽上傳中用到的 FileList 和 FileReader 接口。

    FormData : FormData 是基于 XMLHttpRequest Level 2的新接口,可以方便 web 應用模擬 Form 表單數據,重要的是它支持文件的二進制流數據,這樣我們就能夠通過它來實現 AJAX 向后端發送文件數據了。

    HTML5 Drag & Drop 事件過去我們想實現網頁中的拖拽效果,基本上都是使用DOM事件模型中的mousedown、mousemove、mouseup的事件監聽來模擬拖拽效果,為了實現實時的拖拽移動效果,還要不停地獲取鼠標的坐標,還要不停的修改元素的位置,代碼要堆很多,而且性能上也很不好(不停地修改元素位置會導致頁面reflow,除非絕對定位),現在有了html5原生的Drag & Drop 拖拽事件,真的是方便了許多,用”事半功倍”來形容絕不為過。

    Drag & Drop 包括以下事件:

    dragstart: 要被拖拽的元素開始拖拽時觸發,這個事件對象是被拖拽元素

    dragenter: 拖拽元素進入目標元素時觸發,這個事件對象是目標元素

    dragover: 拖拽某元素在目標元素上移動時觸發,這個事件對象是目標元素

    dragleave: 拖拽某元素離開目標元素時觸發,這個事件對象是目標元素

    dragend: 在drop之后觸發,就是拖拽完畢時觸發,這個事件對象是被拖拽元素

    drop: 將被拖拽元素放在目標元素內時觸發,這個事件對象是目標元素

    完成一次成功頁面元素拖拽的行為事件過程: dragstart –> dragenter –> dragover –> drop –> dragend 要想實現拖拽,首頁需要阻止瀏覽器默認行為,一共四個事件。

    1 $(document).on({
    2     dragleave:function(e){    //拖離
    3 e.preventDefault();
    4 $('.dashboard_target_box').removeClass('over');
    5     },
    6     drop:function(e){        //拖后放
    7 e.preventDefault();
    8     },
    9     dragenter:function(e){    //拖進
    10 e.preventDefault();
    11 $('.dashboard_target_box').addClass('over');
    12     },
    13     dragover:function(e){    //拖來拖去
    14 e.preventDefault();
    15 $('.dashboard_target_box').addClass('over');
    16     }
    17 });

    獲取文件數據 HTML5 File API

    File API 中的 FileList 接口,它主要通過兩個途徑獲取本地文件列表:

    一種是 <input type="file">的表單形式,

    一種是 e.dataTransfer.files拖拽事件傳遞的文件信息

    var fileList = e.dataTransfer.files;

    使用files 方法將會獲取到拖拽文件的數組形勢的數據,每個文件占用一個數組的索引,如果該索引不存在文件數據,將返回 null 值??梢酝ㄟ^length屬性獲取文件數量.

    var fileNum = fileList.length;

    判斷文件類型

    fileList[0].type.indexOf (’image’);

    FormData 模擬表單實現Ajax文件上傳

    file.getAsBinary獲取文件流很簡單,但是要想上傳數據,就要模擬一下表單的數據格式了,首先看看模擬表單的 js 代碼, FormData模擬表單數據時更是簡潔,不用麻煩的去拼字符串,而是直接將數據 append 到 formdata 對象中即可

    1 xhr = new XMLHttpRequest();
    2 xhr.open("post", "test.php", true);
    3 xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
    4
    5 var fd = new FormData();
    6 fd.append('ff', fileList[0]);
    7
    8 xhr.send(fd);

      相關評論

      閱讀本文后您有什么感想? 已有人給出評價!

      • 8 喜歡喜歡
      • 3 頂
      • 1 難過難過
      • 5 囧
      • 3 圍觀圍觀
      • 2 無聊無聊

      熱門評論

      最新評論

      發表評論 查看所有評論(0)

      昵稱:
      表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
      字數: 0/500 (您的評論需要經過審核才能顯示)
      女人让男人桶30分钟免费视频,女人张开腿让男人桶个爽,一进一出又大又粗爽视频
    • <td id="ae6ms"><li id="ae6ms"></li></td>
    • <xmp id="ae6ms"><td id="ae6ms"></td><table id="ae6ms"></table>
    • <table id="ae6ms"></table>
    • <td id="ae6ms"></td>
      <td id="ae6ms"></td>
    • <table id="ae6ms"></table><table id="ae6ms"><td id="ae6ms"></td></table>
    • <td id="ae6ms"></td>
    • <table id="ae6ms"><li id="ae6ms"></li></table>
    • <table id="ae6ms"></table>