将从浏览器创建的文件保存到磁盘 - 无法在FireFox上使用新的File()

时间:2016-04-28 12:15:30

标签: javascript firefox

以下脚本在浏览器中创建一个json文件,并自动将其保存到磁盘。

它适用于Chrome 50.0.2661.87 m但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 个答案:

答案 0 :(得分:-1)

删除此行

window.URL.revokeObjectURL(link.href);

好像你在使用url之前处理它。

测试:https://jsfiddle.net/cLvf7yny/