Theme NexT works best with JavaScript enabled

ShunNien's Blog

不積跬步,無以致千里;不積小流,無以成江海。

0%

下載 Blob 在 IE 11 遇到的問題

透過 JavaScript 下載 Blob ,發現在 IE 11 上,不能下載

範例程式如下,以下程式在 IE 就無法下載

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
var saveData = (function () {
var a = document.createElement("a");
return function (data, fileName) {
var json = JSON.stringify(data),
blob = new Blob([json], {type: "octet/stream"}),
url = window.URL.createObjectURL(blob);
a.href = url;
a.download = fileName;
a.click();
a.remove();
window.URL.revokeObjectURL(url);
};
}());

var data = { x: 42, s: "hello, world", d: new Date() },
fileName = "my-download.json";

saveData(data, fileName);

主要原因是 createObjectURL 在 IE 11 中沒有作用

雖然 createObjectURL 在 MDN 中寫了支援 IE 11 ,但是不知道為什麼就是沒有效;參考了 stackoverflow 此篇討論 更改使用 navigator.msSaveOrOpenBlob

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
var saveData = function() {
var a = document.createElement("a");
var json = JSON.stringify(data),
blob = new Blob([json], {
type: "octet/stream"
});
if (window.navigator && window.navigator.msSaveOrOpenBlob) { // for IE
window.navigator.msSaveOrOpenBlob(blob, fileName);
}
};

var data = {
t: "hello, world",
d: new Date()
},
fileName = "my-download.json";


document.querySelector('button').addEventListener('click', saveData);

參考資料

歡迎關注我的其它發布渠道