在XMLHttpRequest返回的blob对象中打开一个包含PDF数据的新窗口

时间:2013-09-20 10:41:36

标签: javascript ajax internet-explorer google-chrome

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

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

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

在IE10中(我假设IE的旧版本),在尝试使用window.open()返回的DOMString对象URL.createObjectURL()时,我收到“权限被拒绝”

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

我最好的猜测是它是由同源策略引起的。在Chrome与IE中将DOMString对象记录到控制台时,我注意到Chrome使用协议和主机预先设置了字符串blob:http://localhost:8080/BLOB_DATA,而IE10只有blob:BLOB_DATA

如何在IE中解决此问题?

1 个答案:

答案 0 :(得分:1)

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

window.navigator.msSaveOrOpenBlob(blob, fileName);