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>