javascript 从桌面 : dragenter/dragleave triggers uncorrectly 拖动文件

标签 javascript html events drag-and-drop

为此做了一个 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/

相关文章:

javascript - Ajax 动态数据与柱形条形图

javascript - 可点击 javascript 元素中的 mozilla 蓝色突出显示颜色

php - 使用 php 包含 header 和元标记

css - HTML5,在所有元素上 Canvas

java - 在 Spring 中对多个事件使用 @EventListener 注释

javascript - 悬停时改变颜色

javascript - getElementById 和 jquery 之间的区别 $('#smth' )

javascript - 为什么 .html() 和 .text() 只选择第一个词?

jquery - 将 close 事件附加到已经附加了 fadeOut 的 div

部分页面加载时未触发 jQuery 就绪事件