在IE10中会导致event.dataTransfer.files为null的原因是什么?

时间:2013-04-03 18:13:36

标签: javascript html5 internet-explorer-10

所以,鉴于此代码:

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对象根本不存在。

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

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

你可能有一个javascript错误或某些不一定与他有关的东西。但你可以做的是检查FileList对象是否存在。

if(typeof FileList !== 'undefined')

如果您的浏览器中存在FileList,则应该为true。如果它返回false,则表示您可能没有使用IE10。

答案 1 :(得分:0)

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