我试图在iframe中渲染pdf。它在Mozilla(v54)和Chrome(v59)上工作正常,但是当我点击加载PDF的链接时,IE(v11)中没有任何反应。经过多次调试后,我发现Chrome / Firefox中的网址为blob:http://localhost:37444/5a8e7fed-cd61-4c58-904c-fad2ae169718,而IE(v11)中的网址为blob:B7395CB5-169D-471F-BB8F-AA90EAFB6DDB。为什么URL.createObjectURL(blob)没有在IE(v11)中附加http请求
function (iframe, url, headers) {
var xhr = new XMLHttpRequest();
xhr.open('GET', url);
xhr.onreadystatechange = handler;
xhr.responseType = "arraybuffer";
headers.forEach(function (header) {
xhr.setRequestHeader(header[0], header[1]);
});
xhr.send();
function handler() {
if (this.readyState === this.DONE) {
if (this.status === 200) {
var blob = new Blob([xhr.response], { type: "application/pdf" });
var objectUrl = URL.createObjectURL(blob);
iframe.src = objectUrl;
} else {
console.error('XHR failed', this);
}
}
}
答案 0 :(得分:0)
IE不会为这些blob对象创建一个url,因为出于安全原因我认为。所以使用var objectUrl = URL.createObjectURL(blob);不会提供你可以在iframe或embed标签中使用的源url。 我遇到了同样的问题并搜索了很多关于修复的问题。但是无法得到答案。相反,我解决了以下问题。 你可以使用以下IE浏览器
if (bowser.msie && window.navigator.msSaveOrOpenBlob) {
navigator.msSaveOrOpenBlob(file, fileName);
}else{
//do what you were doing for other than IE
}
上述IE代码将提示用户是否要保存文件或直接打开文件。 用户可以点击按钮'打开'然后IE将显示PDF而不在默认阅读器中下载。