IE 中 json 文件的 msSaveBlob 的 InvalidStateError
InvalidStateError with msSaveBlob for json file in IE
我在实施绕过 Internet Explorer 中 "download" 属性缺失行为的解决方案时遇到了一些问题。
用户可以下载三种类型的文件:
- 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"
问题可能来自哪里?
好吧,终于又看了一遍我的代码,我发现了问题。
在使用它创建 blob 之前,您必须将 json 字符串化,如下所示:
var tempGeoJSON = JSON.stringify(geojson);
而不是这个:
var tempGeoJSON = geojson;
我在实施绕过 Internet Explorer 中 "download" 属性缺失行为的解决方案时遇到了一些问题。
用户可以下载三种类型的文件:
- 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"
问题可能来自哪里?
好吧,终于又看了一遍我的代码,我发现了问题。
在使用它创建 blob 之前,您必须将 json 字符串化,如下所示:
var tempGeoJSON = JSON.stringify(geojson);
而不是这个:
var tempGeoJSON = geojson;