2013-06-21 63 views
0

HTML5拖放操作,嘗試解決是否允許放置元素。HTML 5拖放如何判斷元素是否接受放置

所以根據這一點:

http://dev.w3.org/html5/spec-preview/dnd.html#dndevents

您不能在的dragover讀取數據傳遞數據存儲。因爲dragover是你應該取消的事件,表示你接受一個下降 - 並且在dragOver期間給出這個事件你不能說出被拖動的是什麼,這應該如何工作?我錯過了這裏明顯的東西?

看起來你必須取消dragover/dragenter,如果有什麼被拖動的東西可以放在你的元素上,但是你只能找出拖放的東西。

+0

提起這個bug對WHATWG規範 - https://www.w3.org/Bugs/Public/show_bug.cgi? ID = 23486 – broofa

回答

0

所以 - 我們想出了一個辦法來做到這一點。

可以讀取dataTransfer.types屬性,它返回通過setData添加的類型列表。因此,如果您使用自定義字符串作爲其中一種類型,則可以檢查以確認您添加的拖動數據的存在。

例如

event.dataTransfer.setData("SpecialNameOfDragSource", data); 

然後在你的dragover可以看到,如果這種類型的存在:

function ondragover(ev) { 
    if (ev.dataTransfer.types && ev.dataTransfer.types.indexOf("SpecialNameOfDragSource") > -1) { 
     // cancel the event 
    } 
}