【问题标题】:Windows Edge and opening a blob url [duplicate]Windows Edge并打开一个blob url [重复]
【发布时间】:2015-11-19 22:57:27
【问题描述】:

尝试在 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 等。

【问题讨论】:

  • 这个好运吗?我在客户端本身创建的数据上报告了这样的错误。我的 google-fu 还没有找到解决方案...
  • 我最终重写了它以不使用 blob url。所以不,我还没有找到解决办法。
  • 旧帖子-但你用什么代替了 blob url?
  • 安装最新版本的 edge(80.x 及以上)解决了这个问题

标签: javascript microsoft-edge bloburls


【解决方案1】:

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

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

链接Here

【讨论】:

  • 你知道如果 IE 或 Edge 有 adblock plus 或类似的东西会阻止静默打开弹出窗口,这是否会起作用?对于非 IE,我最终使用了不会触发新选项卡的 window.location。我不知道 IE/Edge 是否有 msLoadBlobInCurrentTab 可以这么说...
  • 我尝试了您的代码,但在 Edge 中无法使用。
  • 不工作。在 IE 中显示访问被拒绝异常。我有一个 blob 响应对象。我必须下载那个。所以像 let url = URL.createobjecturl(blob); 这样创建 url窗口.打开(网址);这在 chrome 中运行良好。但在 IE 中它不起作用。所以在这里我不得不使用 msSaveOrOpenBlob。此处文件正在下载,但无法在 chrome 等新选项卡中自动打开。那么有什么方法可以在 Edge 中实现它。 @欧文·多米宁
猜你喜欢
  • 1970-01-01
  • 2011-09-10
  • 1970-01-01
  • 2017-12-26
  • 1970-01-01
  • 2019-04-14
  • 1970-01-01
  • 1970-01-01
  • 2013-12-09
相关资源
最近更新 更多