2013-02-11 40 views
0

我写了一个小脚本,通过在隐藏inputdiv下拉文件输入。我的代码如下所示:下载输入与Firefox/Safari浏览器/ IE

<!DOCTYPE html> 
<html> 
<head> 
    <title>drop</title> 
</head> 
<body> 

<div id="dropzone" style="height: 200px; width: 200px; background-color: green;"> 
drop here 
</div> 

<input type="file" id="file" class="hidden"> 

<script type="text/javascript" src="jquery-min.js"></script> 
<script type="text/javascript" src="drop.js"></script> 

</body> 
</html> 

drop.js:

$(document).on("dragover drop", function(e) { 
    e.preventDefault(); // allow dropping and don't navigate to file on drop 
}) 
$("#dropzone").on("drop", function(e) { 
    console.log("drop"); 
    $("#file").prop("files", e.originalEvent.dataTransfer.files); // put files into element 
    this.style.backgroundColor='green'; 
}); 
$("#dropzone").on("dragover", function(e){ 
    console.log("dragover"); 
    this.style.backgroundColor='blue'; 
}); 
$("#dropzone").on("dragleave", function(e){ 
    console.log("dragleave"); 
    this.style.backgroundColor='green'; 
}); 

这适用于Chrome但遗憾的是没有Firefox和Safari,我希望也没有对IE浏览器...我知道这是每个Web开发者都喜欢,所以我应该坚持原生的方式吗?还是有一个图书馆,可以帮助我跨浏览器的东西?所以我只需要这部分没有上传或其他只是把信息通过放在输入字段。

回答

0

这个问题已经通过各种JavaScript库也确保文件上传将在所有的浏览器之前解决。就目前而言,一旦你完善了脚本,你的脚本只能在支持File/Blob API的浏览器中运行。这使IE9和更早的版本以及一些Android版本无法使用。

无需重新发明轮子。如果你坚持这样做,准备一个令人沮丧的考验。我建议使用Fine Uploader,它将在支持File API的浏览器中处理丢弃的文件,在Chrome 21+中丢弃目录,并且将针对不支持File API的浏览器采用文件输入元素。它还包含许多其他功能,例如分块,自动/手动重试失败的上传,自动恢复失败或中断上次会话的上传等。