我使用的是this AngularJS Drag & Drop library,文档令人困惑,而且已经过时了,但是结果是,即使无处可放,它也会掉落。
答案 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
}
}