DataTransfer對(duì)象:退拽傳遞的對(duì)象,一般使用Event.dataTransfer。

專注于為中小企業(yè)提供成都網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)江陽(yáng)免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了成百上千家企業(yè)的穩(wěn)健成長(zhǎng),幫助中小企業(yè)通過網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。
2
draggable屬性,標(biāo)簽元素設(shè)置值為true。drangable=true。
3
ondragstart事件:元素被拖拽的時(shí)候觸發(fā)的事件,作用在被拖拽元素上。
ondragenter事件:進(jìn)入目標(biāo)元素觸發(fā)事件,作用在目標(biāo)元素上。
ondragover事件:拖拽元素在目標(biāo)元素上移動(dòng)的時(shí)候觸發(fā)的事件,作用在目標(biāo)元素上。
ondrop事件:被拖拽的元素在目標(biāo)元素上同時(shí)鼠標(biāo)放開觸發(fā)的事件,作用在目標(biāo)元素上。
ondragend事件:拖拽完成后觸發(fā)事件,作用在被拖拽元素上。
Event.preventDefault()方法:阻止默認(rèn)方法執(zhí)行。ondragover中一定要執(zhí)行preventDefault(),否則ondrop事件不會(huì)被 觸發(fā)。
Event.effectAllowed屬性:拖拽的效果。
設(shè)置元素為可拖放,draggable屬性設(shè)置為true。img draggable="true"
拖動(dòng)元素 使用ondragstart事件。setData()設(shè)置獲取元素。
dataTransfer.setData()方法設(shè)置被拖數(shù)據(jù)類型和值:
function drag(ev){
ev.dataTransfer.setData("Text",ev.target.id);
}
drag(event)聲明方法,規(guī)定被拖動(dòng)的數(shù)據(jù),類型是"text",值是可拖動(dòng)元素id獲取。
拖拽放入目標(biāo) ondragover,ondragover事件規(guī)定在何處放置被拖拽的數(shù)據(jù)。
一定要定義event.preventDefault(),來阻止默認(rèn)動(dòng)作。
進(jìn)行放置 ondrop 當(dāng)放置被拖數(shù)據(jù)時(shí),會(huì)發(fā)生drop事件。
function drop(ev){
ev.preventDefault();
var data=ev.dataTransfer.getData("text");
ev.target.appendChild(document.getElementById(data));
}
,首先要判斷拖入的文件是否符合要求,包括圖片類型、大小等,然后獲取本地圖片信息,實(shí)現(xiàn)預(yù)覽,最后上傳。
$(function(){
...接上部分
var box = document.getElementById('drop_area'); //拖拽區(qū)域
box.addEventListener("drop",function(e){
e.preventDefault(); //取消默認(rèn)瀏覽器拖拽效果
var fileList = e.dataTransfer.files; //獲取文件對(duì)象
//檢測(cè)是否是拖拽文件到頁(yè)面的操作
if(fileList.length == 0){
return false;
}
//檢測(cè)文件是不是圖片
if(fileList[0].type.indexOf('image') === -1){
alert("您拖的不是圖片!");
return false;
}
//拖拉圖片到瀏覽器,可以實(shí)現(xiàn)預(yù)覽功能
var img = window.webkitURL.createObjectURL(fileList[0]);
var filename = fileList[0].name; //圖片名稱
var filesize = Math.floor((fileList[0].size)/1024);
if(filesize500){
alert("上傳大小不能超過500K.");
return false;
}
var str = "img src='"+img+"'p圖片名稱:"+filename+"/pp大小:"+filesize+"KB/p";
$("#preview").html(str);
//上傳
xhr = new XMLHttpRequest();
xhr.open("post", "upload.php", true);
xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
var fd = new FormData();
fd.append('mypic', fileList[0]);
xhr.send(fd);
},false);
});
html5 拖動(dòng)效果在手機(jī)上實(shí)現(xiàn)方法是調(diào)用drag和drop一系列函數(shù)實(shí)現(xiàn)的。
注意:拖拽源在拖拽操作結(jié)束將得到dragend事件對(duì)象,不管操作成功與否。
舉例:
定義可拖放內(nèi)容
div id="columns"
div class="column" draggable="true"headerA/header/div
div class="column" draggable="true"headerB/header/div
div class="column" draggable="true"headerC/header/div
/div
2、監(jiān)聽拖動(dòng)事件
可附加大量不同事件以監(jiān)聽整個(gè)拖放過程:
dragstart
drag
dragenter
dragleave
dragover
drop
dragend
a.這里是開始拖拽
function handleDragStart(e) {
this.style.opacity = '0.4'; ?// this / e.target is the source node.
}
var cols = document.querySelectorAll('#columns .column');
[].forEach.call(cols, function(col) {
col.addEventListener('dragstart', handleDragStart, false);
});
b.dragenter、dragover?和?dragleave?事件處理程序可用于在拖動(dòng)過程中提供額外的可視化提示。例如,在拖動(dòng)期間將鼠標(biāo)懸停在某一列上方時(shí),其邊框可能會(huì)變成虛線。這樣,用戶就能知道這些列也是放置的目標(biāo)區(qū)域。
拖拽發(fā)生過程
被拖拽元素
dragstart 按下鼠標(biāo)鍵并開始移動(dòng)鼠標(biāo)時(shí)
drag 在dragstart事件之后,在元素被拖動(dòng)期間會(huì)持續(xù)觸發(fā)該事件
dragend 當(dāng)拖動(dòng)停止時(shí),會(huì)觸發(fā)dragend事件
放置目標(biāo)元素
dragenter 有元素被拖動(dòng)到放置目標(biāo)上
dragover 緊隨dragenter發(fā)生,在被拖動(dòng)的元素
還在放置目標(biāo)范圍內(nèi)移動(dòng)時(shí),會(huì)持續(xù)觸發(fā)該事件
dragleave 在元素被拖出放置目標(biāo)時(shí)觸發(fā)
drop 元素被放到了放置目標(biāo)中觸發(fā)
注釋:拖拽發(fā)生過程:dragstart-drag-dragenter-dragover-dragleave/drop-dragend
給drop事件加
ev.stopPropagation(); //阻止冒泡
ev.preventDefault(); //阻止默認(rèn)行為
本文題目:html5拖拽,html5拖拽上傳
本文網(wǎng)址:http://chinadenli.net/article24/dsiodce.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站排名、動(dòng)態(tài)網(wǎng)站、關(guān)鍵詞優(yōu)化、做網(wǎng)站、軟件開發(fā)、微信小程序
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)