我有一些代码可以将Base64
数据包转换为PDF文件,然后作为AJAX
请求的一部分下载。
此版本的Chrome和IE效果很好,并且在iOS
的早期版本中也很好。但是,在iOS 12.2
上尝试加载结果时出现以下错误:
“ xmlhttprequest
由于访问控制检查而无法加载”
我已经在线阅读了许多有关此的文章,但是解决方案差强人意,我打开一个新标签页,启动AJAX
请求,然后将结果加载到新标签页中。不太喜欢!
我想念什么吗?这是一个已知的错误吗?
我愿意满足以下条件:
我愿意按照当前的解决方案在新窗口中打开pdf文件,但iOS似乎阻止了在AJAX始终调用期间打开的新窗口。这使我不得不在请求之前将其打开,并希望我得到返回的结果!
if (/iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream) {
var redirectWindow = window.open('', '_blank');
}
APICall.always(function (response) {
if (!utils.checkTimedOut(response.status)) {
model.pdfData = response && response.data || [];
if (model.pdfData) {
var arrBuffer = base64ToArrayBuffer(model.pdfData);
var newBlob = new Blob([arrBuffer], { type: "application/pdf" });
// Mobile IOS
if (/iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream) {
var reader = new FileReader();
reader.fileName = model.customerDocument.valuationDate + ".pdf";
reader.onload = function (e) {
redirectWindow.location = reader.result;
};
reader.readAsDataURL(newBlob);
return;
}
// IE....
// For other browsers....
}
}
});