是否可以以编程方式触发拖动事件?

Lev*_*ith 9 html javascript drag-and-drop

我目前正在使用库Draggabilly向我的应用程序添加拖放功能。我想要做的是drop在 CKEditor 的实例上触发事件(HTML5 原生事件),然后执行任务。这是我到目前为止想出来的:

  1. CKEditor 只会侦听原生 HTML5 事件,例如dragoverdrop
  2. Dragabilly 不会触发本机dragdrop事件。相反,它使用mousedownmouseup

我的问题是,有没有办法使用dispatchEvent或一些类似的方法来模拟dragstart,dragdrop事件?

如果除了我提到的这个问题之外还有更好的解决方案,请告诉我。

谢谢。

PCJ*_*PCJ 7

我已经为此做了一个函数,基于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);
    }
}
Run Code Online (Sandbox Code Playgroud)

以及如何将其用于您要求的事件

    fireCustomEvent('dragover', someDomObject);
    fireCustomEvent('drop', someDomObject, {dataTransfer: {files: [mockedfile]}});
    fireCustomEvent('dragend', someDomObject);
Run Code Online (Sandbox Code Playgroud)