为此做了一个 fiddle :http://jsfiddle.net/terjeto/MN4FJ/
我的问题是,当您将文件从桌面拖到框内并覆盖框内的文本时,dragleave 会触发。 (将文件拖入框中将使边框变为实线 -> 将文件拖到框内的文本上,边框将变为虚线:->这不是我想要的)。
这是浏览器错误吗? (火狐 9@win)。
我还放入了一个用于鼠标上/下操作的框,效果很好,因此您可以比较两者。
我怎样才能实现正确的 dragenter/dragleave 行为?
附言。我绑定(bind)到主体,因为我需要在我的真实应用程序中进行事件委托(delegate)。
最佳答案
这是一个有据可查的规范缺陷。 As Peter-Paul Koch points out here
这样的函数可能会帮助您确定目标元素是否是您要将文件拖放到目标区域的子元素。
function isChildElement(parent, child) {
var childParent = child;
while (childParent) {
if (childParent == parent) {
return true;
}
childParent = childParent.parentNode;
}
return false;
},
关于javascript 从桌面 : dragenter/dragleave triggers uncorrectly 拖动文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8944085/