我有一个代码:
element.addEventListener('dragstart',function(e){
e.dataTransfer.setData('Text', 'something is here');
},false);
当我从事件Drop中的DataTransfer.getData获取数据时,正在运行。
但是当我想在事件Dragover或Dragenter中获取数据时,数据为null。
element.addEventListener('dragover',function(e){
var a = e.dataTransfer.getData('Text');
console.log(a);
},false);
因此,如何在事件Dragover或Dragenter中获取数据
最佳答案
通常,除了dragstart
和drop
之外,您无权访问其他事件的此信息。 Firefox似乎为您提供访问权限,但似乎违反了标准。
在拖放过程中,数据的传输方式是通过data store
对象,该对象包含发生不同操作所需的所有信息。但是,根据访问此数据存储区的event
的不同,对使用此信息的操作有一定的限制。有3种模式,定义如下:
https://html.spec.whatwg.org/multipage/interaction.html#the-drag-data-store
因此,在拖动时,数据存储处于保护模式,因此数据不可用。同样,Firefox的实现方式有所不同,但是无论如何您都不应依赖它。
出于安全原因,存在这些模式,这些数据传输不仅可以传输同一页面的元素,还可以传输其他应用程序,文件等中的数据。