0

我正在使用这个 AngularJS Drag & Drop 库,文档令人困惑,而且已经过时了,但效果是,即使无处可放,它似乎总是会掉下来。

4

1 回答 1

0

一开始我不明白的一件事是,event.preventDefault()在 ondragover 内部是允许 drop 的方式(这与你所期望的有点倒退)。因此,我搜索诸如“如何防止拖放”之类的短语。

无论如何,问题是啊哈,这是库的问题,它似乎有一些代码行来处理一些不再发生的旧情况。所以从技术上讲,它实际上并没有下降,但无论如何它都会调用 onDropSuccess 函数。

此问题onDropSuccess 将始终在 IE 中触发,Windows 上的 Firefox总结了该问题,我使用的修复方法是从以下行中删除这些行function determineEffectAllowed (e)

if (e.dataTransfer && e.dataTransfer.dropEffect === 'none') {
  if (e.dataTransfer.effectAllowed === 'copy' ||
    e.dataTransfer.effectAllowed === 'move') {
    e.dataTransfer.dropEffect = e.dataTransfer.effectAllowed
  } else if (e.dataTransfer.effectAllowed === 'copyMove' || e.dataTransfer.effectAllowed === 'copymove') {
    e.dataTransfer.dropEffect = e.ctrlKey ? 'copy' : 'move'
  }
}

所以它看起来像这样:

function determineEffectAllowed (e) {
  if (e.originalEvent) {
    e.dataTransfer = e.originalEvent.dataTransfer
  }
}
于 2019-09-14T16:00:13.480 回答