事象
APIでレスポンスされたPDFファイルをブラウザで別タブ表示を行おうとしています。
ChromeやFireFoxでは問題なく動作したのですが、Macのsafariで実行すると、うまく表示がされません。
具体的にはURL.createObjectURLで生成したURLが、別タブで開いた際にドメイン部がnullになってしまっており、URLが正しく解釈されていないように見えます。
(下図参照)
知見をお持ちの方がいらっしゃればご教示お願い致します。
実際の実装
private openFile(file: Blob, fileName: string): void {
const blob: Blob = new Blob([file], { type: file.type });
if (window.navigator && window.navigator.msSaveOrOpenBlob) {
// IEの場合
window.navigator.msSaveOrOpenBlob(blob, fileName);
} else {
// IE以外の場合
const anchor: HTMLElementTagNameMap["a"] = document.createElement("a");
document.body.appendChild(anchor);
anchor.href = window.URL.createObjectURL(blob);
anchor.target = "_blank";
anchor.click();
anchor.remove();
}
}
環境
Angular 10
macOS Catalina 10.15.7
Safari 14.0