IE 中 json 文件的 msSaveBlob 的 InvalidStateError

InvalidStateError with msSaveBlob for json file in IE

我在实施绕过 Internet Explorer 中 "download" 属性缺失行为的解决方案时遇到了一些问题。

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

所以在 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"

问题可能来自哪里?

好吧,终于又看了一遍我的代码,我发现了问题。

在使用它创建 blob 之前,您必须将 json 字符串化,如下所示:

var tempGeoJSON = JSON.stringify(geojson);

而不是这个:

var tempGeoJSON = geojson;