这是确切问题的jsfiddle。
对我来说,“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);
其他人有同样的结果吗?
这可能是一个沙盒限制,但我还没有找到任何关于它的...
任何和所有的想法和答案都表示赞赏:)。