Html 以编程方式创建拖动事件时,dataTransfer为null

Html 以编程方式创建拖动事件时,dataTransfer为null,html,drag-and-drop,data-transfer,Html,Drag And Drop,Data Transfer,我正在尝试创建一个DrageEvent,并在Chrome上使用以下代码以编程方式启动它: var ev = document.createEvent("MouseEvents"); ev.initEvent("dragstart"); 然后以这种方式发射: element.dispatchEvent(ev); 元素具有可拖动属性。 事件已成功调度。但是,在激发的事件上,dataTransfer对象为null。即使我尝试手动将其设置为工作的dataTransfer对象,它仍然保持为空。 有什


我正在尝试创建一个DrageEvent,并在Chrome上使用以下代码以编程方式启动它:

var ev = document.createEvent("MouseEvents");
ev.initEvent("dragstart");
然后以这种方式发射:

element.dispatchEvent(ev);
元素具有可拖动属性。

事件已成功调度。但是,在激发的事件上,dataTransfer对象为null。即使我尝试手动将其设置为工作的dataTransfer对象,它仍然保持为空。

有什么想法吗?

谢谢

不幸的是,目前似乎没有这样一种方法以编程方式创建数据传输对象。HTML5拖放界面说明如下:

尽管为了与其他事件接口保持一致,DrageEvent接口有一个构造函数,但它不是特别有用。特别是,无法从脚本创建有用的DataTransfer对象,因为DataTransfer对象有一个处理和安全模型,在拖放过程中由浏览器协调


请在此处查看更多详细信息:

看起来它可以像这样工作:

const dataTransfer = new DataTransfer;
dataTransfer.setData("data", '1');
cell.dispatchEvent(new DragEvent('drop', { dataTransfer: dataTransfer }));

已使用Chrome进行测试,但此方法不会触发dragstart/drop事件。找到另一个相关线程: