防止拖放(拖放到任何地方)

时间:2019-09-14 16:00:13

标签: angularjs drag-and-drop html5-draggable

我使用的是this AngularJS Drag & Drop library,文档令人困惑,而且已经过时了,但是结果是,即使无处可放,它也会掉落。

1 个答案:

答案 0 :(得分:0)

一开始我不了解的一件事是ondragover内的event.preventDefault()是允许放置的方式(有点偏离您的预期)。因此,我搜索诸如“如何防止拖放”之类的短语。

无论如何,问题出在Aha,这是库的问题,它似乎有一些代码行可以处理不再发生的旧情况。因此,从技术上讲,它实际上并没有删除,但无论如何都将调用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
  }
}
相关问题