У меня есть код, чтобы превратить пакет данных Base64
в файл PDF, а затем загрузить его как часть запроса AJAX
.
Версии Chrome и IE прекрасно работают, и это было хорошо на предыдущих версиях iOS
. Однако на iOS 12.2
я получаю следующую ошибку при попытке загрузить результат:
'xmlhttprequest
не может загрузиться из-за проверок контроля доступа'
Я прочитал несколько статей об этом в Интернете, и у меня есть плохое решение, в соответствии с которым я открываю новую вкладку, инициирую запрос AJAX
и затем загружаю результаты в новую вкладку ... но я не делаю очень нравится!
Я что-то упустил? Это известная ошибка?
Я бы согласился на пару вещей:
- Идеально, чтобы открыть файл PDF в окне браузера, как и раньше.
Я бы согласился открыть файл PDF в новом окне в соответствии с моим текущим решением, но iOS, похоже, блокирует открытие нового окна во время вызова AJAX .always. Это оставляет мне необходимость открывать его перед запросом и надеяться, что я вернусь!
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....
}
}
});