13

在 JavaScript 中,我正在向生成 PDF 并返回 PDF 数据的服务器发出 XMLHttpRequest。在 Chrome 中,我可以在新窗口/标签中打开这些数据,如下所示:

window.open( URL.createObjectURL(RETURNED_DATA) );

其中 RETURNED_DATA 是从 XHR 返回的实际数据。

在 IE10(我假设是旧版本的 IE)中,尝试window.open()使用DOMStringURL.createObjectURL()

我尝试了各种版本,例如在发送 XHR 之前打开新窗口并在 XHR 回调中更新新窗口的位置,并使用仅包含 XHR 的简单 HTML 文件打开新窗口,以便它可以更新它XHR 回调中自己的位置。所有这些变体都可以在 Chrome 中使用,但会导致 IE10 中出现“权限被拒绝”错误。

我最好的猜测是它是由同源策略引起的。在 Chrome vs IE中将对象记录DOMString到控制台时,我注意到 Chrome 会在字符串前面加上协议和主机,所以blob:http://localhost:8080/BLOB_DATAIE10 只有blob:BLOB_DATA.

任何想法如何在 IE 中解决这个问题?

4

1 回答 1

1

对于 IE 10 和 11,您可以使用 msSaveOrOpenBlob

window.navigator.msSaveOrOpenBlob(blob, fileName);
于 2015-08-15T06:05:53.850 回答