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

时间:2014-01-30 15:01:11

标签: javascript dom

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

我可以手动创建和发送MouseEvent:

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

但是event.dataTransfer为null所以我得到空引用异常。

我尝试手动设置属性:

event.dataTransfer = {};

我尝试使用属性描述符设置属性:

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

但两项都没有奏效。

1 个答案:

答案 0 :(得分:-1)

这对我有用。

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