防止拖放(它在任何地方掉落)
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
}
}
我用的是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
}
}