回答

2

使用Modernizr.filereader检测

数据传递是undetectables之一,因为不是所有的浏览器将其暴露(如WebKit的),以便如果检测的FileReader应该做的伎俩。我不记得它在哪个浏览器(android/safari等),但该文件在target.files而不是dataTransfer.files中公开,因此检测该对象是否在触发事件中实际存在时是最好的。

if(typeof(e.dataTransfer) !== 'undefined' && typeof(e.dataTransfer.files) !== 'undefined') { 
    files = e.dataTransfer.files; 
} else if(typeof(e.target.files) !== 'undefined') { 
    files = e.target.files; 
} else { 
    //Bail out 
}