2013-02-11 55 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的瀏覽器採用文件輸入元素。它還包含許多其他功能,例如分塊,自動/手動重試失敗的上傳,自動恢復失敗或中斷上次會話的上傳等。