首頁  >  文章  >  web前端  >  小強的HTML5行動開發之路(16)-神奇的拖放功能

小強的HTML5行動開發之路(16)-神奇的拖放功能

黄舟
黄舟原創
2017-01-22 11:50:181156瀏覽

在智慧型手機發展飛速的現在拖放功能已經成為一種時尚,但是在我們的瀏覽器上是不是還缺少這種方便快捷的功能?在HTML5的新標準中就有關於拖放的標準,作為Html5標準的一部分,任何元素都可以被拖放。

一、瀏覽器支援情況


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


註:在 Safari 5.1.2 不支援拖放。

二、使用方法

首先,為了使元素可拖動,把draggable 屬性設定為true :

<img draggable="true" />

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


start

讓rag ,並給該函數傳回一個拖曳物件

<img id="drag1" src="img_logo.gif" draggable="true"  
ondragstart="drag(event)" width="336" height="69" />

dataTransfer.setData() 方法設定被拖曳資料的資料類型和值:(我們將被拖曳物件的id傳給dataTransfer)

function drag(ev)  
{  
<span style="white-space:pre">  </span>ev.dataTransfer.setData("Text",ev.target.id);  
}

放到何處- ondragover


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

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

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

event.preventDefault()

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

在上面,ondrop 屬性調用了一個函數,drop(event):

function drop(ev)  
{  
<span style="white-space:pre">  </span>ev.preventDefault();  
<span style="white-space:pre">  </span>var data=ev.dataTransfer.getData("Text");  
<span style="white-space:pre">  </span>ev.target.appendChild(document.getElementById(data));  
}

程式碼解釋:

  • 調用preventDefault() 來避免瀏覽器對資料的預設處理(drop 事件的預設行為是以連結形式開啟)

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

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

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

二、實例說明以上就是 小強的HTML5行動開發之路(16)-神奇的拖放功能的內容,更多相關內容請關注PHP中文網(www.php.cn)!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn