Имеется такой первоначальный вариант кода, для скачивания текстового файла (text/plain) в ОС (кусок кода вынут из angular-компонента\typescript):
...
getTextCompanyInfo(): string {
let copyText = '';
this.clientInfo.forEach((field: IInfo) => {
const description = field.description
? `${field.description}: `
: '';
copyText += `${description}${field.value}\n`;
});
return copyText;
}
download(): void {
StatusTrackerModalComponent.createDownloadLink(
this.getTextCompanyInfo()
)
}
static createDownloadLink(
fileBody: string,
fileName: string = 'Реквизиты.txt'
): void {
if (window.navigator && window.navigator.msSaveOrOpenBlob) { // если браузер IE11
window.navigator.msSaveOrOpenBlob(new Blob([fileBody]), fileName);
} else { // если evergreen браузеры
const link = window.document.createElement('a');
link.href = window.URL.createObjectURL(
new Blob([fileBody], { type: 'text/plain;charset=utf-8' })
);
link.download = fileName;
link.click();
}
}
...
Потом код был слегка видоизменен на такой вариант (использование плагина для кросс-браузерности):
import { saveAs } from 'file-saver';
...
getTextCompanyInfo(): string {
let copyText = '';
this.clientInfo.forEach((field: IInfo) => {
const description = field.description
? `${field.description}: `
: '';
copyText += `${description}${field.value}\n`;
});
return copyText;
}
copy(): void {
const copiedText = this.getTextCompanyInfo();
copy(copiedText);
}
download(): void {
const type = 'text/plain;charset=utf-8';
const copiedText = this.getTextCompanyInfo();
const blob = new Blob([copiedText], { type });
saveAs(blob, this.fileName);
}
...
В обоих случаях результат одинаков - в Web или Android(Chrome) - текстовый файл скачивается в ОС - Desktop или Android.
В iOS\Safari(v.12.4.1) - файл не скачивается, а открывается в таком окне (
я даже не могу точно сказать, что это за окно такое, ибо не яблочник совсем):
Подскажите - как понять, в чем проблема заключается вообще и как ее решить?