我有一个代码:

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中获取数据

最佳答案

通常,除了dragstartdrop之外,您无权访问其他事件的此信息。 Firefox似乎为您提供访问权限,但似乎违反了标准。

在拖放过程中,数据的传输方式是通过data store对象,该对象包含发生不同操作所需的所有信息。但是,根据访问此数据存储区的event的不同,对使用此信息的操作有一定的限制。有3种模式,定义如下:



https://html.spec.whatwg.org/multipage/interaction.html#the-drag-data-store

因此,在拖动时,数据存储处于保护模式,因此数据不可用。同样,Firefox的实现方式有所不同,但是无论如何您都不应依赖它。

出于安全原因,存在这些模式,这些数据传输不仅可以传输同一页面的元素,还可以传输其他应用程序,文件等中的数据。

10-04 22:25
查看更多