12

尝试在 Windows Edge(20.10240.16384,这是 Microsoft 提供的 IE11 VM 中的版本)中打开带有 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 等。

4

1 回答 1

15

我在 IE 和 Edge 上都找到了解决方案。

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

链接在这里

于 2017-05-26T21:23:02.237 回答