dataTransfer對象提供了對於預定義的剪貼板格式的訪問,以便在拖曳操作中使用。
通俗的講就是在拖曳操作的過程中,我們可以用過dataTransfer對象來傳輸數據,以便在拖曳操作結束的時候對數據進行其他的操作。
感謝分享:http://my.oschina.net/jiangli0502/blog/179197
對象屬性
- dropEffect:設置或返回拖放目標上允許發生的拖放行為。如果此處設置的拖放行為不再effectAllowed屬性設置的多種拖放行為之內,拖放操作將會失敗。該屬性值只允許為“null”、“copy”、“link”和“move”四值之一。
- effectAllowed:設置或返回被拖動元素允許發生的拖動行為。該屬性值可設為“none”、“copy”、“copyLink”、“copyMove”、“link”、“linkMove”、“move”、“all”和“uninitialized”。
- items:該屬性返回DataTransferItems對象,該對象代表了拖動數據。
- types:該屬性返回一個DOMStringList對象,該對象包括了存入dataTransfer中數據的所有類型。
對象方法
- setData(format,data):將指定格式的數據賦值給dataTransfer對象,參數format定義數據的格式也就是數據的類型,data為待賦值的數據
- getData(format):從dataTransfer對象中獲取指定格式的數據,format代表數據格式,data為數據。
- clearData([format]):從dataTransfer對象中刪除指定格式的數據,參數可選,若不給出,則為刪除對象中所有的數據。
- addElement(element):添加自定義圖標
- setDragImage(element,x,y):設置拖放操作的自定義圖標。其中element設置自定義圖標,x設置圖標與鼠標在水平方向上的距離,y設置圖標與鼠標在垂直方向上的距離。<body>
<div style="width:600px;border:1px solid black">
<h2>拖動收藏</h2>
<div draggable="true" ondragstart="dsHandler(event)">中國</div>
<div draggable="true" ondragstart="dsHandler(event)">美國</div>
<div draggable="true" ondragstart="dsHandler(event)">小日本</div>
<div draggable="true" ondragstart="dsHandler(event)">印度</div>
<div draggable="true" ondragstart="dsHandler(event)">垃圾越南</div>
<div draggable="true" ondragstart="dsHandler(event)">垃圾泰國</div>
</div>
<div id="dest" style="width:400px;height:400px;border:1px solid black;float:left">
<h2 ondragleave="return false">收藏夾</h2>
</div>
<img src="us.png" alt="垃圾桶" draggable="false" id="gb" style="float:left"/>
<script type="text/javascript">
var dest=document.getElementById("dest");
var dsHandler=function(e){
e.dataTransfer.setData("text/plain","<item>"+ e.target.innerHTML);
};
dest.ondrop=function(e){
var text= e.dataTransfer.getData("text/plain");
if(text.indexOf("<item>")==0){
var newEle=document.createElement("div");
newEle.id=new Date().getUTCMilliseconds();
newEle.innerHTML=text.substring(6);
newEle.draggable="true";
newEle.ondragstart=function(e){
e.dataTransfer.setData("text/plain","<remove>"+newEle.id);
};
dest.appendChild(newEle);
}
};
document.getElementById("gb").ondrop=function(e){
var id= e.dataTransfer.getData("text/plain");
if(id.indexOf("<remove>")==0){
var target=document.getElementById(id.substring(8));
dest.removeChild(target);
}
};
document.ondragover=function(e){
return false; }; document.ondrop=function(e){ return false; }</script></body>