Windows Edge(20.10240.16384、IE11 VM Microsoftが提供)のバージョン)でblob URLを使用して新しいウィンドウを開こうとすると、奇妙な結果が得られます。
var xhr = new XMLHttpRequest();
xhr.open('POST', sourceUrl, true);
xhr.responseType = 'blob';
xhr.onload = function(e,form) {
if (this.status == 200) {
var blob = this.response;
var url = window.URL.createObjectURL(blob);
var w = window.open(url);
}
}
ライン上
var w = window.open(url);
CORSに関連付けられているように見える「アクセスが拒否されました」というエラーが表示されます。これは、技術的に同じドメインではないため、少し意味があります。しかし、BLOB URLには技術的にドメインがありませんか?
これはEdgeのバグですか?それとも私は正しくないことをしていますか?このコードはIE、Chromeなどで機能します。
IEとEdgeの両方で解決策を見つけました。
if (window.navigator && window.navigator.msSaveOrOpenBlob) {
window.navigator.msSaveOrOpenBlob(blob);
}
else {
var objectUrl = URL.createObjectURL(blob);
window.open(objectUrl);
}
リンク ここ