Javascript Firefox bug,拖动事件给出dataTransfer.files=null,在所有其他浏览器中定义

Javascript Firefox bug,拖动事件给出dataTransfer.files=null,在所有其他浏览器中定义,javascript,firefox,drag-and-drop,dom-events,dragenter,Javascript,Firefox,Drag And Drop,Dom Events,Dragenter,下面是一个确切问题的例子 对我来说,“dragenter”事件dataTransfer.files在除Firefox之外的所有版本中都定义正确。但是,“drop”事件始终具有正确的dataTransfer.files,即使在Firefox中也是如此 不确定这是否是Firefox(21.0,现在是23.0.1)中可能存在的错误,它同时发生在Mac OS和Windows上 完整代码: function preventDefault(_e) { _e.preventDefault(); }

下面是一个确切问题的例子

对我来说,“dragenter”事件dataTransfer.files在除Firefox之外的所有版本中都定义正确。但是,“drop”事件始终具有正确的dataTransfer.files,即使在Firefox中也是如此

不确定这是否是Firefox(21.0,现在是23.0.1)中可能存在的错误,它同时发生在Mac OS和Windows上

完整代码:

function preventDefault(_e) {
    _e.preventDefault();
}

var dropZone = document.getElementById('drop-zone');
dropZone.addEventListener("dragstart", preventDefault, false);
dropZone.addEventListener("dragleave", preventDefault, false);
dropZone.addEventListener("drag", preventDefault, false);
dropZone.addEventListener("dragend", preventDefault, false);
dropZone.addEventListener("dragover", preventDefault, false);
dropZone.addEventListener("dragenter", function(_e) {
    _e.preventDefault();
    console.log(_e.dataTransfer.files);
}, false);
dropZone.addEventListener("drop", function(_e) {
    _e.preventDefault();
    console.log(_e.dataTransfer.files);
}, false);
其他人也有同样的结果吗

这可能是一个沙箱限制,但我还没有找到任何关于它

感谢您的任何想法和答案:)。

根据(),数据处于“保护模式”,即不可用。我猜这是为了防止网站窥探/窃取不适合他们的拖拽物

因此,我的解释是,Firefox不允许访问
dragenter
中的
.files
,这实际上是正确的,而缺陷在于其他浏览器


PS:,显式地在dragenter上不返回任何内容

太棒了,谢谢你的回答,它真的把它弄清楚了!我在上面找不到任何东西,因为我不知道到底要找什么。w3.org和whatwg.org是这类东西的好来源。不幸的是,这很荒谬,因为您无法验证要拖动的文件的类型,而这正是从桌面验证拖动的全部意义。现在,我们不得不说,我们接受任何文件类型,直到我们真正在删除时进行验证:\protectedmode不应该只禁止文件读取,而不允许文件列表及其大小吗?我不想使用特定于浏览器的
mozItemCount
。在Chrome浏览器中,您实际上可以在
绘图机上使用
文件阅读器
打开文件!此规范是否仍涵盖受保护的文件数量和文件大小?