简体   繁体   中英

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.

I can manually create and dispatch a MouseEvent:

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

but event.dataTransfer is null so I'm getting null reference exceptions.

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);

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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