简体   繁体   English

如何使用dataTransfer属性创建事件?

[英]How can I create an event with a dataTransfer property?

I'm trying to write a test that checks that my dragstart event listener sets properties on e.dataTransfer. 我正在尝试编写一个测试,以检查我的dragstart事件侦听器是否在e.dataTransfer上设置了属性。

I can manually create and dispatch a MouseEvent: 我可以手动创建和调度MouseEvent:

var event = new MouseEvent('dragstart');
html[0].dispatchEvent(event);

but event.dataTransfer is null so I'm getting null reference exceptions. 但是event.dataTransfer为null,因此我得到了null引用异常。

I've tried manually setting the property: 我尝试过手动设置属性:

event.dataTransfer = {};

and I've tried setting the property using a property descriptor: 并且我尝试使用属性描述符设置属性:

var event = new MouseEvent('dragstart');
Object.defineProperty(event, "dataTransfer", {
    configurable: true,
    writable: true,
    value : {}
});

but neither has worked. 但都没有奏效。

This worked for me. 这对我有用。

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM