InvalidStateError with msSaveBlob for json file in IE



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

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

  • .CSV
  • 地理JSON
  • .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]);

我收到此错误:"无效状态错误"

问题可能从哪里来?

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

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

var tempGeoJSON = JSON.stringify(geojson);

取而代之的是:

var tempGeoJSON = geojson;

最新更新