2015-08-26 99 views
5

當嘗試在Windows Edge(20.10240.16384,這是Microsoft提供的IE11 VM中的版本)中打開一個具有blob url的新窗口時,我收到了一些奇怪的結果。Windows Edge並打開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網址在技術上並不具有域名?

這是Edge中的一個bug嗎?或者我做的事情不完全正確?此代碼適用於IE,Chrome等。

+0

這一個運氣好的話?我有這樣的錯誤報告在客戶端自己創建的數據。我的谷歌福還沒有發現一個解決方案呢...... –

+0

我最終重寫它不使用blob網址。所以不,我還沒有發現修復這樣做的方式。 – Technicolour

+0

舊帖子 - 但是你用什麼代替blob urls? – sdd

回答

1

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

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

鏈接Here