簡體   English   中英

是否可以以編程方式觸發拖動事件?

[英]Is it Possible to Trigger Drag Events Programmatically?

我目前正在使用Draggabilly庫向我的應用程序添加拖放功能。 我正在嘗試做的是在CKEditor的一個實例上觸發drop事件(HTML5 native),然后執行一個任務。 這是我到目前為止所發現的:

  1. CKEditor只會收聽dragoverdrop等原生HTML5事件。
  2. Dragabilly不會觸發本機dragdrop的事件。 相反,它使用mousedownmouseup

我的問題是,是否有使用方法dispatchEvent或一些類似的方法來模擬dragstartdragdrop的事件?

如果除了我提到的問題之外,還有更好的解決方案,請告訴我。

謝謝。

我已經為此完成了一個函數,基於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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM