HTML 5拖放如何判断元素是否接受放置

时间:2013-06-21 11:37:29

标签: html5 drag-and-drop

HTML5拖放,尝试确定是否允许放置元素。

所以根据这个:

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

您无法在dragover上阅读DataTransfer数据存储。因为dragover是你应该取消的事件,表示你接受了一个掉落 - 并且假设在dragOver期间你不知道被拖动的是什么,这应该如何工作?我错过了一些明显的东西吗?

似乎你必须取消dragover / dragenter,如果有可能被拖动的东西可能被丢弃在你的元素上,但你只能找到被拖拽的东西。

1 个答案:

答案 0 :(得分:0)

所以 - 我们找到了一种方法来做到这一点。

可以读取dataTransfer.types属性,该属性返回通过setData添加的类型列表。因此,如果您使用自定义字符串作为其中一种类型,则可以检查以确认是否存在您添加的拖动数据。

e.g。

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

然后在dragover中你可以看到这种类型是否存在:

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