【问题标题】:Is it Possible to Trigger Drag Events Programmatically?是否可以以编程方式触发拖动事件?
【发布时间】:2014-05-16 21:54:06
【问题描述】:

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

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

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

如果有比我提到的更好的解决方案,请告诉我。

谢谢。

【问题讨论】:

  • 您可以调用 drop() 处理程序调用的 ckeditor api 部分。

标签: javascript html drag-and-drop


【解决方案1】:

我已经为此做了一个函数,基于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);

【讨论】:

猜你喜欢
  • 2011-03-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-20
  • 2017-03-02
  • 1970-01-01
相关资源
最近更新 更多