ondrop 触发时 event.dataTransfer.files 为空?

问题描述 投票:0回答:4

好吧,我设置了一个元素来接收文件删除事件,但是当我查看

event.dataTransfer
时,它是空白的。我还没有抽出时间来学习拖放式 HTML5 API,对它仍然有点模糊。我正在我的网站上进行这项工作。如果您不介意浏览我的代码并看看发生了什么,我们将不胜感激。正在记录整个
event
对象。

javascript html drag-and-drop
4个回答
218
投票

工作正常,只是控制台的一个错误。

function onDrop(event) {
    event.preventDefault();
    console.log(event.dataTransfer.files[0]);
}

6
投票

另请看一下此错误/行为:HTML5 放置事件在处理拖拽之前不起作用

基本上,您需要处理悬停/拖动并指定 dropEffect


0
投票

所以,我对这种行为真的很恼火。所以我想出了一个小循环,基本上克隆了整个对象:

  const seen = new WeakSet()
  const parseObj = (obj) => {
    const newObj = {}

    for (const key in obj) {
      if (typeof obj[key] === 'function') {
        continue
      }
      if (obj[key] === null) {
        newObj[key] = null
        continue
      }
      if (typeof obj[key] === 'object') {
        if (seen.has(obj[key])) {
          continue
        }

        seen.add(obj[key])
        newObj[key] = parseObj(obj[key])
      } else {
        newObj[key] = obj[key]
      }
    }

    return newObj
  }

  console.log(parseObj(e))

它适用于我的用例


-2
投票

我在以下位置找到了我需要的东西:

e.originalEvent.dataTransfer
© www.soinside.com 2019 - 2024. All rights reserved.