2015-08-26 8 views
5

Ich erhalte einige seltsame Ergebnisse, wenn ich versuche, ein neues Fenster mit einer Blob-URL in Windows Edge (20.10240.16384, die Version in der von Microsoft gelieferten VM IE11) zu öffnen.Windows Edge und Öffnen einer 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); 
    } 
} 

Auf der Linie

var w = window.open(url); 

Ich erhalte einen „Zugriff verweigert“ Fehler, der mit CORS gebunden werden sieht, die ein wenig Sinn macht, da es technisch nicht die gleiche Domain ist. Allerdings hat eine BLOB-URL technisch gesehen keine Domain?

Ist das ein Fehler in Edge? Oder mache ich etwas nicht ganz richtig? Dieser Code funktioniert in IE, Chrome usw.

+0

irgendein Glück mit diesem? Ich habe solche Fehler über Daten, die auf dem Client selbst erstellt wurden. Mein Google-Fu hat noch keine Lösung aufgedeckt ... –

+0

Ich habe es umgeschrieben, um keine Blob-URLs zu verwenden. Also nein, ich habe noch keine Lösung gefunden, um es auf diese Weise zu machen. – Technicolour

+0

alte Post- Aber was hast du anstelle von Blob URLs verwendet? – sdd

Antwort

1

Ich fand die Lösung auf IE und Edge.

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

Der Link Here