我目前正在开发一个使用HTML5拖放API的项目来提供附加功能,包括将项目拖入和拖出浏览器。我目前遇到特定于Chrome的问题(否则只在Firefox中测试,它按预期工作)。
问题是我无法使用event.dataTransfer.getData(type)
方法在除dragstart
事件之外的任何事件中返回drop
事件的数据集。
在绑定到dragstart
事件(触发后)后,我设置了这样的事件:
event.dataTransfer.setData('text/plain', "some string")
然后在drop
事件中,我可以很好地获取数据。
event.dataTransfer.getData('text/plain')
但是,我不能对任何其他事件(例如dragover
)使用与上述相同的方法。即使我在调用setData()
后尝试在线路上使用上述方法(即在dragstart
回调中),它仍然会返回undefined
。
因此,在Chrome中,问题是Chrome中的getData
将始终返回undefined
,drop
事件回调除外。 (在Firefox中,我可以成功获取正确的数据。)
如果您对同一个拖动元素的dataTransfer
对象有引用,那么为什么在删除数据之前无法获取数据?
只是想知道:
答案 0 :(得分:22)
WebKit,以及Chrome,对于何时可以致电getData
非常严格。您不允许在dragstart
or dragover
内执行此操作。我想this is the canonical bug。
答案 1 :(得分:3)
引用this answer:
这些数据只能在drop下使用,这是一项安全功能,因为当您在网页上拖动某些内容时,网站可能会抓取数据。