簡體   English   中英

HTML拖放-當可拖動元素未放置在有效的放置代理上時接收事件

[英]HTML drag and drop - Receive an event when an draggable element is NOT dropped on an valid drop-agent

當可拖動元素未放置在有效的放置代理上時,如何接收事件? drop和dragend的偵聽器分配在不同的閉包中。 我寧願不要依賴超時和全局名稱空間。

我有一個使用超時和全局名稱空間的解決方法,該方法顯示了我正在尋找的功能。

//global namespace

let justDropped = false;



(() => {
  //closure for the drag events
  let dragElement = document.querySelector("#drag");

  dragElement.addEventListener("dragend", (e) => {
    if (!justDropped) {
      console.log("Not dropped on an valid drop-agent");
    }
  })
})();


(() => {
  //closure for drop event
  let dropElement = document.querySelector("#drop");

  dropElement.addEventListener("drop", (e) => {
    justDropped = true;
    setTimeout(() => {
      justDropped = false;
    }, 10)
  })
})();

無法通過拖放功能獲取放置目標,但是可以添加一個全局放置功能,您可以在其中檢查目標並檢查它是否在目標之外。

(() => {
  const htmlElement = document.querySelector("html");
  const dropElement = document.querySelector("#drop");

  htmlElement.addEventListener("drop", (e) => {
    if (e.currentTarget !== dropElement) {
      console.log("Not dropped on an valid drop-agent");
    }  
  })
})();

暫無
暫無

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

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