web-dev-qa-db-ja.com

WindowsEdgeとblobURLを開く

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などで機能します。

11
Technicolour

IEとEdgeの両方で解決策を見つけました。

if (window.navigator && window.navigator.msSaveOrOpenBlob) {
    window.navigator.msSaveOrOpenBlob(blob);  
 }
 else {
     var objectUrl = URL.createObjectURL(blob);
      window.open(objectUrl);  
}

リンク ここ

13
nisiumi