我正在使用这个AngularJS拖放库,文档令人困惑,而且已经过时了,但效果是,即使无处可放,它总是会掉落。
我最初不明白的一件事是,在 ondragover 内部event.preventDefault()
是允许丢弃的方式(这与您可能期望的有点倒退(。因此,我搜索诸如"如何防止拖放"之类的短语。
无论如何,问题是啊哈,这是库的问题,它似乎有一些代码行来处理一些不再发生的旧情况。所以从技术上讲,它实际上根本没有丢弃,但无论如何它都会调用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
}
}