为啥这段代码获取不到 files 信息呢?

2014-11-24 17:18:08 +08:00
 kmvan

JS:

var h5 = {
cache : {},
init : function(){
cache.$file = document.getElementById('file');
cache.$file.addEventListener('drop', this.drop_handle, false);
},
drop_handle : function(e){
e.stopPropagation();
e.preventDefault();
var files = e.target.files || e.dataTransfer.files;
console.info(files);
return false;
}
}
h5.init();

HTML:

<input type="file" name="" id="file" style="font-size:5em">

在 ff 或 chrome 中,把文件拖放进去到 file 按钮,console.log 出来的是空文件信息,这段代码有哪里有错吗?怎么看也没有错吧……

6361 次点击
所在节点    JavaScript
4 条回复
Arrowing
2014-11-24 17:35:24 +08:00
<input type="file" name="" id="file" style="font-size:5em" draggable="true">

this.cache.$file = document.getElementById('file');
this.cache.$file.addEventListener('drop', this.drop_handle, false);
typcn
2014-11-24 17:37:58 +08:00
http://blog.eqoe.cn/posts/jquery-drag-upload-image.html

参考这个,绑定个事件什么元素都可以了
Arrowing
2014-11-24 17:43:33 +08:00
var files = (e.target.files.length && e.target.files) || e.dataTransfer.files;
kmvan
2014-11-24 18:48:46 +08:00
@Arrowing var files = (e.target.files.length && e.target.files) || e.dataTransfer.files;

谢谢回复,不过奇怪啊,ff 里面获取的 e.target.files.length 居然是 0,但console出来的明明是显示1。而且 ff 的 e 里面没有 dataTransfer 属性,得加一个 originalEvent.dataTransfer,真奇葩。。。


@typcn 参考这个,绑定个事件什么元素都可以了

3Q,已参考 originalEvent.dataTransfer 这个属性……

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/148936

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX