我在实现绕过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;