HTML5拖放getData()仅适用于Chrome中的drop事件?

Chr*_*rce 25 javascript html5 drag-and-drop

我目前正在开发一个使用HTML5拖放API的项目来提供附加功能,包括将项目拖入和拖出浏览器.我目前遇到特定于Chrome的问题(否则只在Firefox中测试,它按预期工作).

问题是我不能使用该event.dataTransfer.getData(type)方法dragstart在除事件之外的任何事件中返回事件上的数据集drop.

在绑定到dragstart事件(发生火灾)后,我设置了这样的事件:

event.dataTransfer.setData('text/plain', "some string")
Run Code Online (Sandbox Code Playgroud)

然后在这个drop事件中,我可以得到数据.

event.dataTransfer.getData('text/plain')
Run Code Online (Sandbox Code Playgroud)

但是我不能在任何其他事件(例如dragover)上使用与上面相同的方法.即使我在调用之后尝试在线上使用上面的方法setData()(即在dragstart回调中),它仍然会返回undefined.

因此,在Chrome中,问题是getDataChrome会始终返回undefined,但drop事件回调除外.(在Firefox中,我可以成功获取正确的数据.)

如果你有对dataTransfer同一个拖动元素的对象的引用,那么为什么在删除数据之前你不能获取数据呢?

就是想:

  • 以前有没有人遇到Chrome的这个问题?
  • 有什么变通方法?
  • 或者,Chrome需要解决的问题是什么?

资源: HTML5拖放规范.

rob*_*rtc 22

WebKit,以及Chrome,对你什么时候打电话有很大的限制getData.你不允许在里面dragstart或者dragover里面做.我认为这是规范的错误.


Z. *_*lah 5

参考 这个答案

数据仅在放置时可用,这是一项安全功能,因为当您碰巧在网页上拖动某些内容时,网站可能会抓取数据。