2013-06-21 62 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 
    } 
}