Javascript 如何创建具有dataTransfer属性的事件?

Javascript 如何创建具有dataTransfer属性的事件?,javascript,dom,Javascript,Dom,我正在尝试编写一个测试,检查dragstart事件侦听器是否在e.dataTransfer上设置了属性 我可以手动创建并分派MouseeEvent: var event = new MouseEvent('dragstart'); html[0].dispatchEvent(event); 但是event.dataTransfer是空的,所以我得到了空引用异常 我已尝试手动设置属性: event.dataTransfer = {}; 我尝试使用属性描述符设置属性: var event = n

我正在尝试编写一个测试,检查dragstart事件侦听器是否在e.dataTransfer上设置了属性

我可以手动创建并分派MouseeEvent:

var event = new MouseEvent('dragstart');
html[0].dispatchEvent(event);
但是event.dataTransfer是空的,所以我得到了空引用异常

我已尝试手动设置属性:

event.dataTransfer = {};
我尝试使用属性描述符设置属性:

var event = new MouseEvent('dragstart');
Object.defineProperty(event, "dataTransfer", {
    configurable: true,
    writable: true,
    value : {}
});
但两者都不起作用

这对我很有效

var dataTransferObj = { setData: function (val) { this.data = val }}
var event = new CustomEvent('dragover');
event.dataTransfer=dataTransferObj
target.dispatchEvent(event);
这对我有用

var dataTransferObj = { setData: function (val) { this.data = val }}
var event = new CustomEvent('dragover');
event.dataTransfer=dataTransferObj
target.dispatchEvent(event);

似乎您应该创建一个,而不是
MouseEvent
。谢谢。我在MDN上也看到了这一点,但我似乎无法实际创建一个:DrageEvent没有定义。你能想出这个吗?我不记得了,但我不认为你应该创建一个,而不是一个
MouseEvent
。谢谢。我在MDN上也看到了这一点,但我似乎无法实际创建一个:DrageEvent没有定义。你能想出这个吗?我不记得了,但我不这么认为