2013-04-03 161 views
2

因此,鉴于此代码:什么会导致IE10中event.dataTransfer.files为空?

var container = document.getElementById("body"); 
container.addEventListener("dragenter", noopHandler, false); 
container.addEventListener("dragover", noopHandler, false); 
container.addEventListener("drop", function(evt) { 
    noopHandler(evt); 
    console.log('drop'); 
    console.log(evt.dataTransfer.files); 
}, false); 

在Chrome和FF,evt.dataTransfer.files包含所有用户放弃了页面上的文件。

但在IE10中,没有evt.dataTransfer.files。 FileList对象根本不存在。

任何想法?

+0

在IE 10.0.9200.16618 –

+1

中可以正常工作1.您确定您使用的是IE10的官方版本?只需检查,因为dataTransfer.files是在Preview 2中添加的,所以在技术上可以让“IE10”没有这些文件。如果你使用一个普通的',那么'document.getElementById('file')。addEventListener('change',function(){console.log (this.files);},false);'让你的文件列表? – 2013-07-29 19:50:50

+0

我有类似的问题。希望[this] [1]可以帮助你。 [1]:http://stackoverflow.com/a/19094779/1088805 –

回答

1

dataTransfer.files IE10中确实存在,它甚至记录在IE开发中心:http://msdn.microsoft.com/en-us/library/ie/hh580307(v=vs.85).aspx

你可能有一个JavaScript错误或东西是没有必然的关系OT了。你可以做的是检查FileList对象是否存在。

if(typeof FileList !== 'undefined') 

如果FileList存在于浏览器中,这应该是真的。如果它返回false,这意味着你可能不使用IE10。

0

我对答案有点迟,但您可能想检查兼容性视图是否关闭。在IE9及以下版本中,dataTransfer不存在,并且使用任何更改浏览器呈现的控制台工具都会从dataTransfer中移除文件对象。