#div1 {width:488px;height:70px;padding:10px;border:1px solid #"/> #div1 {width:488px;height:70px;padding:10px;border:1px solid #">

首頁  >  文章  >  web前端  >  詳解HTML5中的拖放事件(Drag 和 drop)

詳解HTML5中的拖放事件(Drag 和 drop)

黄舟
黄舟原創
2017-02-21 13:27:301404瀏覽

瀏覽器支援

Internet Explorer 9、Firefox、Opera 12、Chrome 以及 Safari 5 支援拖放。

註解:在 Safari 5.1.2 中不支援拖放。

HTML5 拖曳實例

<!DOCTYPE html>
<html> 
<head> 
<style type="text/css"> 
#p1 {width:488px;height:70px;padding:10px;border:1px solid #aaaaaa;} 
</style> 
<script type="text/javascript"> 
function allowDrop(ev) 
{ 
ev.preventDefault(); 
} 
 
function drag(ev) 
{ 
ev.dataTransfer.setData("Text",ev.target.id); 
} 
 
function drop(ev) 
{ 
ev.preventDefault(); 
var data=ev.dataTransfer.getData("Text"); 
ev.target.appendChild(document.getElementById(data)); 
} 
</script> 
</head> 
<body> 
 
<p>请把 Aseoe logo的图片拖放到矩形中:p> 
 
<p id="p1" ondrop="drop(event)" ondragover="allowDrop(event)">p> 
<br /> 
<img id="drag1" src="http://www.aseoe.com/statics/images/eoe/logo.png" 
draggable="true" ondragstart="drag(event)" /> 
 
</body> 
</html>



設定元素為可拖曳

首先,為了讓元素可拖曳,把draggable 屬性設為true :

#拖曳什麼- ondragstart 和setData()

然後,規定當元素被拖曳時,會發生什麼。

在上面的範例中,ondragstart 屬性呼叫了一個函數,drag(event),它規定了被拖曳的資料。

dataTransfer.setData() 方法設定被拖曳資料的資料類型和值:

#
function drag(ev)
{
ev.dataTransfer.setData("Text",ev.target.id);
}



在這個範例中,資料型別是" Text",值是可拖曳元素的id ("drag1")。

放到何處 - ondragover


#ondragover 事件規定在何處放置被拖曳的資料。

預設地,無法將資料/元素放置到其他元素中。如果需要設定允許放置,我們必須阻止對元素的預設處理方式。

這要透過呼叫ondragover 事件的event.preventDefault() 方法:

event.preventDefault()



##來放置- ondrop

當放置被拖曳資料時,會發生drop 事件。

在上面的範例中,ondrop 屬性呼叫了一個函數,drop(event):


#

function drop(ev)
{
ev.preventDefault();
var data=ev.dataTransfer.getData("Text");
ev.target.appendChild(document.getElementById(data));
}


##程式碼解釋:
呼叫preventDefault() 來避免瀏覽器對資料的預設處理(drop 事件的預設行為是以連結形式開啟)

透過dataTransfer.getData("Text") 方法獲得被拖的數據。此方法將傳回在 setData() 方法中設定為相同類型的任何資料。

被拖曳資料是被拖曳元素的id ("drag1")

把被拖曳元素追加到放置元素(目標元素)中


總結


以上就是詳解HTML5中的拖放事件(Drag 和drop) 的內容,更多相關內容請關注PHP中文網(www.php.cn)!

# 詳解HTML5中的拖放事件(Drag 和 drop)
陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn