HTML5拖放getData()只适用于Chrome中的拖放事件
HTML5 Drag and Drop getData() only works on drop event in Chrome?
我目前正在处理一个项目,该项目使用HTML5拖放API来提供添加的功能,包括在浏览器中拖动项目和从浏览器中拖动项。我目前遇到了Chrome特有的问题(除此之外,只在Firefox中进行了测试,它可以正常工作)。
问题是,我不能在除drop
事件之外的任何事件中使用event.dataTransfer.getData(type)
方法返回dragstart
事件上的数据集。
在绑定到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
对象的引用,那么为什么在删除数据之前不能获取数据呢?
只是想知道:
- 以前有人在Chrome上遇到过这种麻烦吗
- 有什么变通办法
- 或者,这是Chrome需要修复的问题吗
资源:HTML5拖放规范。
WebKit以及Chrome对何时可以调用getData
有很大的限制。不允许在dragstart
或dragover
中执行此操作。我认为这是典型的错误。
引用这个答案:
数据只在拖放时可用,这是一个安全功能,因为当你碰巧在网页上拖动东西时,网站可能会抓取数据。
相关文章:
- EaseJS拖放;放下(动画CC)电影剪辑的鼠标坐标
- 为什么HTML5拖放的目标是孩子?(可排序列表)
- HTML/CSS-用于拖放的全页面覆盖
- Rubaxa可与聚合物进行排序/拖放不起作用,具体取决于显示器:
- dblclick事件是在jquery拖放后触发的
- Chrome原生拖放相对容器并不能正确渲染重影
- dataTransfer.set拖放的数据在chrome中不起作用
- 拖放不会'不能使用EaselJS在chrome中工作
- html5拖放上传在chrome中中断
- 拖放文件时,dataTransfer.items属性在Firefox和IE中未定义,但在Chrome中未定义
- 如何在Chrome中禁用拖放功能
- HTML5拖放getData()只适用于Chrome中的拖放事件
- Chrome拖放文件/文件夹不工作
- 我如何通过Chrome扩展模拟文件拖放上传
- 拖放选择元素(Google Chrome)
- 禁用Chrome/Safari拖放动画
- HTML5 chrome中的拖放错误
- HTML5拖放ondragover未在Chrome中启动
- 为带有量角器的离子应用程序创建一些测试,以测试用户是否可以成功地在chrome上拖放元素
- 在Chrome中拖放图像