防止拖放(它在任何地方掉落)

Prevent drag & drop (it's dropping anywhere)

我用的是this AngularJS Drag & Drop library,文档很乱,而且已经过时了,但是效果就是好像没地方丢也总是丢。

一开始我不明白的是 ondragover 中的 event.preventDefault() 是允许拖放的方式(这与您的预期有点相反)。因此我搜索像 "how to prevent drag & drop".

这样的短语

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

这个问题 onDropSuccess will always trigger in IE and Firefox on Windows 总结了这个问题,我使用的修复方法是从 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
  }
}