2016-04-28 58 views
1

以下腳本在瀏覽器中創建json文件並自動將其保存到磁盤。將從瀏覽器創建的文件保存到磁盤 - 無法在FireFox上使用新文件()

它工作正常Chrome 50.0.2661.87米,但它不起作用FF 47.0a2(雖然沒有錯誤拋出)。

問題似乎涉及到(因爲如果你把它註釋掉作品):

window.URL.revokeObjectURL(link.href); 

什麼是對FF這種行爲的原因是什麼?我應該省略window.URL.revokeObjectURL()嗎?

注意:它應該適用於最新的瀏覽器Chrome和FireFox。

var saveDataToFile = function(data, fileName, properties) { 
 
    window.URL = window.URL || window.webkitURL; 
 
    var file = new File(data, fileName, properties), 
 
    link = document.createElement('a'); 
 
    link.href = window.URL.createObjectURL(file); 
 
    link.download = fileName; 
 
    document.body.appendChild(link); 
 
    link.click(); 
 
    window.URL.revokeObjectURL(link.href);// possible problem here 
 
    document.body.removeChild(link) 
 
}; 
 

 
var fileName = 'test.json', 
 
    properties = { 
 
    type: 'octet/stream' 
 
    }, 
 
    data = [JSON.stringify({ 
 
    test: 'hello' 
 
    })]; 
 
saveDataToFile(data, fileName, properties);

回答

-1

刪除此行

window.URL.revokeObjectURL(link.href); 

好像你要丟棄的URL它用於下載之前。

測試:https://jsfiddle.net/cLvf7yny/

+0

感謝分享,問題只發生在FF而不是Chrome上。任何想法爲什麼? – GibboK

+0

@GibboK,只是不同的下載實現。 – Qwertiy

相關問題