IE中的json文件使用msSaveBlob的InvalidStateError

时间:2016-02-09 14:25:55

标签: javascript json internet-explorer download blob

我有一些问题需要实施一个解决方案,以绕过"下载" Internet Explorer中的属性。

用户可以下载三种类型的文件:

  • CSV
  • geoJSON
  • KML

Chrome和FF没问题。它的工作原理如下:

var tempCSV = json2CSV(geojson);
var csv = "text/csv;charset=utf-8," + encodeURIComponent(tempCSV);
$('#downloadCSV').attr('href', "data:" + csv);

由于IE不像其他人一样,我使用msSaveBlob来处理它:

if (navigator.msSaveBlob) {
   var blobCSV = new Blob([tempCSV]);
   $('#downloadCSV').click(function (e) {
       navigator.msSaveBlob(blobCSV, "geo.csv");
       e.preventDefault();
});

它适用于CSV和KML文件。 但不是geoJSON。我收到这行错误:

var blobGeoJSON = new Blob([tempGeoJSON]);

我收到此错误:" InvalidStateError"

问题可能来自哪里?

1 个答案:

答案 0 :(得分:1)

好的,最后再次阅读我的代码后,我发现了问题。

你必须在用它创建一个blob之前对你的json进行字符串化,如下所示:

var tempGeoJSON = JSON.stringify(geojson);

而不是:

var tempGeoJSON = geojson;