我目前正在使用库Draggabilly向我的应用添加拖放功能。我尝试做的是触发CKEditor实例上的drop
事件(HTML5本机事件),然后执行任务。这是我到目前为止所知道的:
dragover
等本机HTML5事件
和drop
。drag
和drop
事件。相反,它使用mousedown
和mouseup
。我的问题是,有没有办法使用dispatchEvent
或类似方法来模拟dragstart
,drag
和drop
事件?
除了我提到的问题之外,如果有更好的方法解决这个问题,请告诉我。
感谢。
答案 0 :(得分:4)
我已根据stackoverflow中的一些代码为此完成了一项功能,我也读过了 在MDN中,我正在使用该对象的表单已弃用,但它对我有用,我将在未来纠正,但现在这可以帮助您
function fireCustomEvent(eventName, element, data) {
'use strict';
var event;
data = data || {};
if (document.createEvent) {
event = document.createEvent("HTMLEvents");
event.initEvent(eventName, true, true);
} else {
event = document.createEventObject();
event.eventType = eventName;
}
event.eventName = eventName;
event = $.extend(event, data);
if (document.createEvent) {
element.dispatchEvent(event);
} else {
element.fireEvent("on" + event.eventType, event);
}
}
以及如何将其用于您要求的事件
fireCustomEvent('dragover', someDomObject);
fireCustomEvent('drop', someDomObject, {dataTransfer: {files: [mockedfile]}});
fireCustomEvent('dragend', someDomObject);