雖然可以用mousedown、mousemove、mouseup實現拖放功能,但它們只支持瀏覽器內拖放,而html5 的API中,已經可以支持瀏覽器與其他應用程序之間數據元素的相互拖動。
1、屬性
draggable:想要對某對象元素進行拖動操作,就可以把它的draggable屬性值設置爲true(draggable=“true”)。
此外,img元素和a元素(必須指定href)默認允許拖放。
2、
事 件 產生事件的元素 描述
dragstart 被拖放的元素 開始拖放操作
drag 被拖放的元素 拖放過程中
dragenter 拖放過程中鼠標經過的元素 被拖放的元素開始進入本元素的範圍內
dragover 拖放過程中鼠標經過的元素 被拖放的元素在本元素範圍內移動
dragleave 拖放過程中鼠標經過的元素 被拖放的元素離開本元素的範圍
drop 拖放的目標元素 有其他元素拖放到本元素中
dragend 拖放的對象元素 拖放操作結束
3、DataTransfer 接口
html5支持拖曳數據存儲,使用datatransfer接口,作用於元素的拖曳基礎上。
var dt = ev.dataTransfer;
屬性:
datatransfer.effectAllowed = value
//一般在ondragstart事件中設定,返回允許執行拖曳操作效果,可以設置修改:none, copy,copyLink, copyMove,link,linkMove,move,all,uninitialized
datatransfer.types
//返回在dragstart事件出發時爲元素存儲數據的格式,如果是外部文件的拖曳,則返 回“filse”
datatransfer.clearData([format])
//刪除指定格式的數據,如果未指定,則刪除當前元素所有數據
datatransfer.setData(format,data)
//爲元素添加指定數據,現支持拖動處理的MIME的類型有:text/plain,text/html, text/xml,text/uri-list
datatransfer.getData(format)
//返回指定數據,如果數據不存在,則返回空字符串
datatransfer.files
//如果是拖曳文件,返回文件列表FileList
datatransfer.setDragImage(element, x, y)
//制定拖曳元素時跟隨鼠標移動的圖片,想,y分別爲相對鼠標的座標
datatransfer.addElement(element)
//添加一起跟隨拖曳的元素
demo:
http://www.zhangxinxu.com/study/201102/html5-drag-and-drop.html